c++ - 在 C 编程方面需要帮助 -> 指针
问题描述
这里有什么错误?
int main() { int* pointer = new int [1000]; if (!pointer) return -1; for (int j = 0; j < 1000; j++) *pointer++ = j; If (pointer) { delete [] pointer; pointer = NULL; } return 0; }
解决方案
在声明中
*pointer++ = j;
被pointer
移动到分配的内存中的下一个位置。[后自增运算符将操作数的值增加,1
但表达式的值是操作数在自增操作之前的原始值]
在for
循环之后,pointer
指向内存超过分配的数组内存和这里
delete [] pointer;
您的程序正在尝试delete
使用它不拥有的内存。
为了解决这个问题,在数组中插入元素时需要一个临时指针
int* temp = pointer;
for (int j = 0; j < 1000; j++)
*temp++ = j;
推荐阅读
- python - 当我尝试更新它时,PIP 说它是最新的,但它不是
- postgresql - 有没有办法找到每一行的总和?PostgreSQL
- java - Java8:G1GC Remark 阶段的类卸载耗时太长
- amazon-web-services - HTTP ERROR 408 - 设置 kubernetes 以及 AWS ELB 和 NGINX Ingress 之后
- python - 如何在python中解开子进程解析xml
- python - 如果我将所有内容都正确放入,我该怎么做才能修复此语法错误?
- reactjs - React Native Maps - 标记重绘功能仍然有效?
- javascript - GET http://0.0.0.0:8080/index.html?age=8&rel= 404 (/找不到对象)
- ios - 我的符号化崩溃报告看起来不像符号化的
- ios - Firebase 身份验证链接不起作用 - 缺少尾部斜杠?