知道结果吗?

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下,就会出现正确的结果
//请问这两种编译条件下有何区别??怎么用?
...全文
109 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧