在扫描所需的大小后,我试图从用户扫描整数。我代表了部分代码,我使用 valgrind(返回 valgrind 中的错误是:“大小为 4 的无效写入”)发现导致内存泄漏。内存泄漏是由main下面的函数引起的。当用户输入大小然后输入比声明更多的数据时会出现问题,例如 SIZE = 8 和 DATA = 1 2 3 4 5 6 7 8 9 10,我以为我的代码只是忽略了额外的数据(这就是我的意图),但是当我尝试调试它时一切正常,但是当它到达第一个空闲命令时崩溃。
我真的不明白为什么会这样,你能帮我解决吗?
int main()
{
int size = 0;
int* user_numbers_array = (int*) malloc(size * sizeof(int));
int* second_array = (int*) malloc(size * sizeof(int));
printf("Enter size of input:\n");
scanf("%d", &size);
ScanNumbersFromUser(size, user_numbers_array)
free(user_numbers_array);
free(second_array);
return 0;
}
int ScanNumbersFromUser(int size, int* user_numbers_array)
{
int user_number = 0;
printf("Enter numbers:\n");
for(int i = 0; i < size; i++){
if(scanf("%d",&user_number) =! 1){ \\testing for valid input
printf("error");
return 0;
}
*(user_numbers_array + i) = user_number;
}
return 1;
}
Run Code Online (Sandbox Code Playgroud)