您的位置:首页 > 其它

关于字节对齐与HEAP CORRUPTION DETECTED错误

2011-03-28 10:58 369 查看
#pragma pack(字节数)

#pragma pack()

如果在头文件中声明的结构体A使用了字节对齐与默认对齐规则不一致。

而另外文件中的其他类或结构体B使用了该结构体A,则B应该使用字节显式对齐,否则可能引起错误。

sizeof(B) 与B实际的大小不一定一致,因为编译器可能额外的对B进行了处理,而这种处理NEW 和 DELETE是不知道的。

NEW 和 DELETE 就有可能出现内存越界错误。

NEW C(16)

DELETE C(16)

可能优化后的C是13,对C中最后一个成员变量改变了值可能导致C(16)后面的FDFDFDFD值发生变化,引起内存越界错误

可以通过VS2005查看内存工具(视图---》其他窗口---》命令窗口--》memory),发现new 一个类时候的操作,与delete时的处理。

错误:

HEAP CORRUPTION DETECTED: after %hs block (#%d) at 0x%p./n"

"CRT detected that the application wrote to memory after end of heap buffer./n",
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: