運行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