c++ - 指向新元素和新数组的指针之间的区别?
问题描述
在 C++ 中,下面代码中的指针 p 和 q 之间有什么区别吗?
int* p = new int;
int* q = new int[5];
我知道一个为单个 int 分配新内存,第二个为 5 个 int 的数组分配内存,但从根本上说,指向单个 int 的指针和指向 int 数组的指针之间有什么区别吗?
我有这个疑问是因为我读到必须使用它delete[] q
来释放 q 指向的内存,但仅delete p
用于 p 指向的单个 int。如果我使用会发生什么delete q
?
解决方案
指针本身是完全无法区分的。这就是为什么你必须记住匹配new
/delete
和new[]
/ delete[]
。
不匹配它们会触发未定义的行为。
推荐阅读
- hadoop - 在 Hive 中需要有关日期功能的帮助
- python - Pycharm 无法导入包并在我的 vmware 机器 windows 7 中显示 SSL 错误
- python - 防止在 pandas 方法链接期间过早评估操作
- extjs - mainView 上 renderTo EXTJS 的方法
- php - 从星期几、年份和星期数获取日期
- javascript - GatsbyJS + Netlify 表单没有收到提交
- javascript - 如何修改 javascript 调用的 mailto 链接以在 Chrome 中工作
- excel - 来自单元格区域的 VBA 列引用
- php - 调用未定义函数 BaconQrCode\Encoder\iconv()
- session-cookies - 多米诺服务器上 wkhtmltopdf 的身份验证