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成功.....没关系。 –