首页 > 解决方案 > 是否可以断言指针指向数组?

问题描述

我正在创建一个解构函数,并且我想断言我的指针float *queue指向一个浮点数组。编译器似乎不喜欢

assert([]queue);

如果我使用我的程序段错误

assert(queue != NULL); delete []queue;

. 谢谢您的帮助。

标签: c++

解决方案


你不能。

nullptr您可以通过将指针与(或NULL在 C++11 之前的版本中;NULL自 C++11 起不应该使用)进行比较来测试指针是否具有空指针值,但您永远无法判断非空指针是否指向一个有效的对象,无论该对象是数组的一部分还是该对象/数组是否由new/分配new[]

程序员的工作是确保代码永远不会达到需要上述信息但不可用的状态。

最简单的方法是永远不要使用 raw new/ delete。而是只使用std::vectorand std::unique_ptr


您也不需要在调用之前检查空指针delete[]delete[]可以用空指针调用,在这种情况下它根本不做任何事情。您不能delete[]使用没有返回值的非空指针调用new[](并且还没有被delete[]编辑)强硬。那将有未定义的行为


推荐阅读