知道结果吗?
#include<iostream.h>
void main()
{
char *str1="hello";
char *str2="hello";
*str1='p';
cout<<str2<<endl;
}
//以上程序在win32 Debug下,就会出现错误,内存不能写
//在win32Release下,就会出现正确的结果
//请问这两种编译条件下有何区别??怎么用?
问题点数:20、回复次数:5Top
1 楼zPerry(旧日重来)回复于 2003-05-02 18:34:37 得分 10
字符串放在只读内存区,你修改了自然会出错。
关于两种编译条件下有何区别,可详见http://expert.csdn.net/Expert/topic/1520/1520262.xml?temp=.101391Top
2 楼Maxwell(不可知)回复于 2003-05-03 00:06:46 得分 3
在debug 环境下会有更严格的检查,像你的操作,"hello" 是const 类型的,是不应该修改它的,但是在release 版中,这种检查就没有了。Top
3 楼021850524(吸血鬼牌卫生巾)回复于 2003-05-03 04:11:06 得分 3
这应该是野指针吧.
你要是开了编译器优化的话,就应该是pello
要是没开编译器优化,就应该是hello.
编译器优化的结果是把两个hello存成一个了.Top
4 楼021850524(吸血鬼牌卫生巾)回复于 2003-05-03 04:14:46 得分 2
标准的写法是const char *str1="hello";
const char *str2="hello";Top
5 楼justaseeker(MS)回复于 2003-05-03 08:20:06 得分 2
字符串是常量,放在只读内存区,不能进行写Top




