返回信息流rt,有一个程序之前好好的,不知道怎么了,忽然debug就不行了,执行的时候出现内存错误,release倒还好好的,咋回事儿啊?在线等大牛,多谢多谢
这是一条镜像帖。来源:北邮人论坛 / cpp / #47231同步于 2010/12/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求release和debug的区别
realerge
2010/12/2镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
最常见的一种情况
struct A
{
A() { clear(); }
void clear() { delete p; }
void *p;
};
int main()
{
A* a = new A(); // 还是 A a; 来着?记不清了
return 0;
}
debug版本会帮你对申请的内存填充0xCC,然后delete 0xCC,就崩了;但是release版本会
帮你填0,delete (void*)(0)倒是没问题。
PS. 谁知道vs2003下面怎么设置工程属性让debug版不填充0xCC,debug版不能用,烦死了。
【 在 realerge (realerge) 的大作中提到: 】
: rt,有一个程序之前好好的,不知道怎么了,忽然debug就不行了,执行的时候出现内存错误,release倒还好好的,咋回事儿啊?在线等大牛,多谢多谢
【 在 FadeToBlack 的大作中提到: 】
: 最常见的一种情况
: struct A
: {
: ...................
去掉/GZ
assert在debug下默认开启 在release下关闭
FILE* p = fopen("C:/temp/a.txt",'r');
assert(p);
fclose(p);
release版本不会进入到assert宏 debug会
#define NDEBUG可以关闭debug