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,你需要检查它。
我正在尝试学习 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,你需要检查它。