读书人

linux64与win32开释结构体时表现不一样

发布时间: 2013-06-25 23:45:41 作者: rapoo

linux64与win32释放结构体时表现不一样,求解
对于结构体,先释放第一个指针成员,再释放结构体指针,这时候在linux64下,第二个数组成员或指针成员的内容没变,而在win32下发生变化。代码如下:


[解决办法]
访问已经释放的内存,这么做是没有意义的,你要测试是不是已经释放,做个循环,再在系统中查看进程所占内存的大小有没有变化,没有变化说明已经释放,否则有内存泄露~~~~~~~
[解决办法]
引用:
Quote: 引用:

访问已经释放的内存,行为未定义,不必研究了

已经释放?那为什么内容没有变化?


只是尚未被别人占用而已!如果释放是用某个特定的数字覆盖整个区域,cpu 岂不要累死?
[解决办法]
内存释放过以后并不一定会马上清理的。
另外linux平台和windows平台的内存管理也有差异。没有可比性。

不过这也告诉楼主,C语言malloc的内存块里面的内容都是随机的。
所以,应该调用memset()初始化一下内存块。

读书人网 >C语言

热点推荐