运行INT一个奇怪的场景,比我要求的malloc被分配更多的内存:Ç - 的malloc分配太多内存
void function (int array [], int numberOfElements) {
int *secondArray = malloc(sizeof(int) * numberOfElements/2);
for (int i = 0; i < numberOfElements/2; i++) {
secondArray[i] = array[i];
}
}
假设数组是一些10个号码。当我在上述代码之后打印出secondArray,我得到:
所以首先,数组应为5个元素。但第二,为什么0到底?我为mallocing只有10/2 = 5整数的空间。
编辑:
打印代码:
for (int d = 0; d < numberOfElements; d++) {
printf("%i ", secondArray[d]);
}
嗯,我可能刚才已经回答这里我自己的问题,我猜它超出了secondArray印刷,显示0,而不是数组本身。
-
其实,问题是,我也没有这样做:
secondArray[numberOfElements] = '\0';
这就是为什么它被印超越。
由于您不显示打印代码,我们只能猜测。一个合理的猜测是,你打印'for(int i = 0; i
我将添加打印代码 – Live2Enjoy7
我可能回答了我自己的问题 – Live2Enjoy7