我知道编译器有时会使用某些模式(如 0xCD
和 0xDD
)初始化内存。我想知道的是 什么时候和 为什么会发生这种情况。
这是特定于所使用的编译器吗?
malloc/new
和 free/delete
在这方面的工作方式是否相同?
是特定平台的吗?
它是否会出现在其他操作系统上,例如 Linux
或 VxWorks
?
我的理解是,这只发生在 Win32
调试配置中,它用于检测内存溢出并帮助编译器捕获异常。
您能给出一些实际的例子来说明这种初始化是如何有用的吗?
我记得读过一些东西(可能在代码完成2中) ,说当分配内存时,最好将内存初始化为一个已知的模式,并且某些模式将触发 Win32
中的中断,这将导致异常显示在调试器中。
这个有多便携?