知道结果吗?

fertiland 2003-05-02 06:16:21
#include<iostream.h>

void main()
{
char *str1="hello";
char *str2="hello";

*str1='p';

cout<<str2<<endl;

}
//以上程序在win32 Debug下,就会出现错误,内存不能写
//在win32Release下,就会出现正确的结果
//请问这两种编译条件下有何区别??怎么用?
...全文
90 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Maxwell 2003-05-03
在debug 环境下会有更严格的检查,像你的操作,"hello" 是const 类型的,是不应该修改它的,但是在release 版中,这种检查就没有了。
  • 打赏
  • 举报
回复
justaseeker 2003-05-03
字符串是常量,放在只读内存区,不能进行写
  • 打赏
  • 举报
回复
021850524 2003-05-03
标准的写法是const char *str1="hello";
const char *str2="hello";
  • 打赏
  • 举报
回复
021850524 2003-05-03
这应该是野指针吧.
你要是开了编译器优化的话,就应该是pello
要是没开编译器优化,就应该是hello.
编译器优化的结果是把两个hello存成一个了.
  • 打赏
  • 举报
回复
zPerry 2003-05-02
字符串放在只读内存区,你修改了自然会出错。
关于两种编译条件下有何区别,可详见http://expert.csdn.net/Expert/topic/1520/1520262.xml?temp=.101391
  • 打赏
  • 举报
回复
发帖
C语言

6.6w+

社区成员

C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
帖子事件
创建了帖子
2003-05-02 06:16
社区公告
暂无公告