c/c++:在visual studio中自动初始化指针为null

c/c++: Automatically initialize pointers to null in visual studio

本文关键字:初始化 指针 null studio c++ visual      更新时间:2023-10-16

我理解将未初始化的指针自动初始化为null所涉及的开销。但我已准备好应付这种开销;那么我如何使Visual Studio 2010 c++编译器将所有未初始化的指针设置为null

请注意,我不需要智能指针解决方案,因为我正在调试现有的应用程序。

我不知道有任何这样的功能,我从来没有听说过有人在寻找它。

这似乎是一条非常危险的道路。

当您编写的代码只是假设未初始化的指针是空指针时,会发生什么情况,然后您将代码迁移到IDE的新安装中,或者将其交给其他人?您将传播难以发现的UB bug。不是很好!

:

  • 为未初始化的变量打开警告
  • 初始化这些变量

或者,为了调试现有的破损代码,使用Visual Studio提供具有自动存储持续时间的未初始化数据的底层字节模式0xCC。查找此值,而不是查找0x00

  • 何时以及为什么操作系统将内存初始化为0xCD, 0xDD等malloc/free/new/delete?

您可以用这种行为创建一个类,类似于:

template <typename T>
class Ptr
{
public:
    Ptr() = default;
    Ptr(T*ptr) : ptr(ptr) {}
    // ...
    operator T*&() {return ptr;}
private:
    T* ptr = nullptr;
};