首页 > 解决方案 > 与“未初始化的堆栈指针”冲突

问题描述

我最近被告知,MSVC 的未初始化堆栈内存的调试模式标记是 0xCCCCCCCC。我现在很担心;虽然不太可能,但如果 malloc()/new/any 指针巧合地作为 this 指针结束会发生什么?它会抛出错误吗?这会导致重要系统出现问题吗?

标签: c++cvisual-studiovisual-c++

解决方案


malloc标准要求适当对齐以存储任何类型的变量并new返回适当对齐的指针,以便可以将其转换为任何完整对象类型的指针。

0xCCCCCCCC2^2它的因式分解,这意味着最高对齐是 4 字节对齐(它不能被 8 整除)。所以在 MSVC 中的 x86 上(其中long long是 8 个字节)malloc并且new永远不会返回0xCCCCCCCC.


这是我想到的,我相信还有更多的故事。


推荐阅读