1
我需要分配一個malloc數組,我必須從輸入讀取一些數字。這是我的代碼:指針指針數組&堆棧粉碎錯誤
#include <stdio.h>
#include <stdlib.h>
void read(int **array, int *array_size)
{
int *tmp;
int i;
scanf("%d", array_size);
*array=malloc(*array_size*sizeof(int));
tmp=malloc(*array_size*sizeof(int));
for(i=0;i<*array_size;i++)
{
scanf("%d", &tmp[i]);
array[i]=&tmp[i];
}
}
//DO NOT EDIT main()
int main()
{
int *array;
int array_size,i;
read(&array,&array_size);
printf("Print array:\n");
for(i=0;i<array_size;i++)
printf("%d\n", array[i]);
return 0;
}
它有點兒工作,但顯示值之後它顯示了一個堆棧溢出檢測(我使用GCC編譯它)。
我認爲問題是*array=malloc(*array_size*sizeof(int))
,但我不知道如何解決它。有沒有另一種方式來分配這個數組而不編輯main()?謝謝。
Array_size甚至沒有初始化... –
順便說一下'#include'是MCVE絕對必需的。缺少'''malloc'將會在64位平臺上出現嚴重錯誤。 –
@TonyTannous考慮scanf成功.....沒關係。 –