世界上最痛苦的事莫过如此

影风骑士 2011-04-22 10:53:49
在类声明中定义一个int 随便,比如a
在类函数中赋值a = 10;
程序运行至赋值语句,崩溃了。试了N次都是这样,最后把这个变量注释掉,结果变成了另一个一样的变量赋值导致崩溃。

百思不得其解,跟断点跟了N次,最后想到clean掉工程,然后……就OK了,这到底什么问题导致的,难道跟内存泄露有关吗?
还有的时候,重新把变量单独private: int a;
也能解决问题,但不是每次,所以我想肯定我写程序的时候有不良习惯导致了上述问题,但是我实在不知道哪里的问题。
...全文
88 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
影风骑士 2011-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 akirya 的回复:]
头文件不匹配,某些文件没有重新编译
所以在不同的文件中class的大小不一致造成的

clean之后就全部重新编译了,大小也就一致了,于是就没问题了。
[/Quote]
看来有必要每次都clean干净
luciferisnotsatan 2011-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 akirya 的回复:]

头文件不匹配,某些文件没有重新编译
所以在不同的文件中class的大小不一致造成的

clean之后就全部重新编译了,大小也就一致了,于是就没问题了。
[/Quote]
++
Meteor_Code 2011-04-22
  • 打赏
  • 举报
回复
很明显,你在一个class里加了一个int,其他的程序不知道你增加了,他们都按照原来的方式使用你的class对象,如果new函数也不知道,那你麻烦大了
你是不是用make方式建立工程,然后依赖关系没写好啊,vs是会自动建立依赖关系的,一般不出错
或者是你修改了一个动态库,另一个程序不知道你修改了,还按照原来的方式读写内存,也会这样
cdwill 2011-04-22
  • 打赏
  • 举报
回复
可能是你其他地方有内存泄露,例如数组越界或者堆栈爆了之类的
Sou2012 2011-04-22
  • 打赏
  • 举报
回复
要不就是头文件和源文件对不上。 你可以试着 rebuild all试一下。
Sou2012 2011-04-22
  • 打赏
  • 举报
回复
应该是指针的问题。
  • 打赏
  • 举报
回复
头文件不匹配,某些文件没有重新编译
所以在不同的文件中class的大小不一致造成的

clean之后就全部重新编译了,大小也就一致了,于是就没问题了。
迷世书童 2011-04-22
  • 打赏
  • 举报
回复
应该是你内存泄露了
建议参考文章
http://blog.csdn.net/wf1988_12_07/archive/2011/04/07/6306721.aspx
看看(转载的地址崩溃)
另外你要看看你是不是开销了大的内存没有释放什么
数据越界都有可能

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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