C++ 中的警告:指针包含一个值,在尝试分配新 int32_t 时必须检查该值

Warning in C++: Pointer holds a value that must be examined when trying to assign new int32_t

我正在尝试学习 C++ 中的动态内存分配。 我的程序可以编译并运行,但是 Visual Studio 向我抛出这些警告。

它们是什么意思?

Warning C28193  'ptr' holds a value that must be examined.
Warning C28182  Dereferencing NULL pointer. 'ptr' contains the same NULL value as 
'new(1*4, nothrow)'

我的代码:

#include <iostream>
#include <cstdint>

int main()
{
    int* ptr = nullptr;

    if (!ptr) {
        ptr = new (std::nothrow) int32_t;
        *ptr = 10;
    }

    std::cout << *ptr << "\n";

}
new (std::nothrow) int32_t

尝试为 int32_t 分配内存,如果不能,它不会抛出异常,它 returns nullptr.

你继续给它分配一个数字(10),但是你需要先通过检查 ptr 是否为 nullptr 来确定内存分配是否成功,然后再分配该值。它试图告诉您需要进行一些错误检查。

当你打印出来时也是一样,它可能是一个 nullptr,你需要检查它。