Ser*_*kyi 7 c++ debugging visual-studio
可能重复:
操作系统在malloc/free/new/delete上将内存初始化为0xCD,0xDD等的时间和原因是什么?
为什么内存我没有初始化设置为0xCC?
将内存设置为0xCC会降低性能,因此必须有一个填充内存的原因.
Rom*_* R. 14
当您使用Visual Studio编译程序的调试版本并在调试器中运行它时,您可以看到分配或取消分配的内存具有有趣的值,例如...
0xCC使用/ GZ选项编译代码时,会将未初始化的变量自动分配给该值(在字节级别).
CCCCCCCC由Microsoft的C++调试运行时库用于标记未初始化的堆栈内存
在Visual Studio CRT源中,\VC\crt\src\malloc.h:
#define _ALLOCA_S_STACK_MARKER 0xCCCC
// ...
#undef _malloca
#define _malloca(size) \
__pragma(warning(suppress: 6255)) \
((((size) + _ALLOCA_S_MARKER_SIZE) <= _ALLOCA_S_THRESHOLD) ? \
_MarkAllocaS(_alloca((size) + _ALLOCA_S_MARKER_SIZE), _ALLOCA_S_STACK_MARKER) : \
_MarkAllocaS(malloc((size) + _ALLOCA_S_MARKER_SIZE), _ALLOCA_S_HEAP_MARKER))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4369 次 |
| 最近记录: |