为什么我的动态数组打印出垃圾值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我的动态数组打印出垃圾值?相关的知识,希望对你有一定的参考价值。
我有一个包含以下功能的头文件:
int* createList(int n) {
if (n >= 1) {
int* list = new int[n];
for (int i = 0; i < n; i++)
list[n] = 0;
return list;
}
return nullptr;
}
在我的主文件中,我具有以下主要功能:
int main() {
int* list = createList(9);
for (int i = 0; i < 9; i++) {
cout << list[i] << endl;
}
delete[] list;
return 0;
}
我的程序应该为动态数组的每个值输出全0,但是,最终我得到了垃圾值。这是示例输出:
0
1610612736
0
1610612736
-1727266800
32767
1631355286
32767
-1727229592
我不确定这里发生了什么?这是内存泄漏吗?
答案
createList()
中的以下代码段:
for (int i = 0; i < n; i++)
list[n] = 0;
在循环的每次迭代中设置list[n]
,这总是在数组边界之外。
替换为:
for (int i = 0; i < n; i++)
list[i] = 0;
即,用i
代替n
。
以上是关于为什么我的动态数组打印出垃圾值?的主要内容,如果未能解决你的问题,请参考以下文章
我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情