c++ - 是否可以断言指针指向数组?
问题描述
我正在创建一个解构函数,并且我想断言我的指针float *queue
指向一个浮点数组。编译器似乎不喜欢
assert([]queue);
如果我使用我的程序段错误
assert(queue != NULL);
delete []queue;
. 谢谢您的帮助。
解决方案
你不能。
nullptr
您可以通过将指针与(或NULL
在 C++11 之前的版本中;NULL
自 C++11 起不应该使用)进行比较来测试指针是否具有空指针值,但您永远无法判断非空指针是否指向一个有效的对象,无论该对象是数组的一部分还是该对象/数组是否由new
/分配new[]
。
程序员的工作是确保代码永远不会达到需要上述信息但不可用的状态。
最简单的方法是永远不要使用 raw new
/ delete
。而是只使用std::vector
and std::unique_ptr
。
您也不需要在调用之前检查空指针delete[]
。delete[]
可以用空指针调用,在这种情况下它根本不做任何事情。您不能delete[]
使用没有返回值的非空指针调用new[]
(并且还没有被delete[]
编辑)强硬。那将有未定义的行为。
推荐阅读
- javascript - 如何从命令行或 javascript 打开 WhatsApp Mac
- r - 创建一个新的 var,其值应该是 r 中其他两个变量之间的平方差
- python - 从 2.7 升级到 3.6 时出现 python requests.post 错误
- ios - 在 Web 视图中从社交媒体下载视频
- python - 每次部署后强制重新安装 Python 包(Flask + Azure App Service)
- django - 应用程序无法读取 django 中的静态文件
- listview - 删除项目时列表不更新
- haskell - 如何在 Haskell 中导入 Math.X?
- python - 熊猫:asfreq 时间序列的奇怪行为
- string - Why commas and underscore is using in Golang. Explain the line 12 in the below code?