考虑到下面的代码,在nullptr上执行指针算法安全吗?
我假设将任何偏移添加到另一个nullptr的nullptr中,到目前为止,MSVC会像我预期的那样产生结果,但是我有点不确定像这样使用nullptr是否安全:
float * x = nullptr;
float * y = x + 31; // I assume y is a nullptr after this assigment
if (y != nullptr)
{
/* do something */
}发布于 2016-07-22 12:34:45
您没有定义“安全”对您来说意味着什么,但是无论如何,您提议的代码具有未定义的行为。指针算法只允许指向数组对象的指针值,或者可能指向数组的一端。(就此规则而言,非数组对象被视为由一个元素组成的数组。)
由于空指针从来不是对象的地址或对象的过去地址,所以您的代码永远不会有定义良好的行为。
发布于 2016-07-22 13:07:15
is it safe to do pointer arithmetic on nullptr? C++ 在nullptr上定义了两种操作。适用于:
float * x=nullptr;
float * y=nullptr;x +/- 0 = xx-y=0 //note x and y have the same type你不能假设什么是没有定义的,所以你不应该这么做。
https://stackoverflow.com/questions/38526510
复制相似问题