gpt4 book ai didi

c - 了解 C 程序中的内存泄漏

转载 作者:太空宇宙 更新时间:2023-11-04 06:18:29 27 4
gpt4 key购买 nike

<分区>

我正在尝试扫描所需大小后从用户那里扫描整数。我代表了部分代码,我使用 valgrind 发现了这些代码(返回 The error in valgrind is: "invalid write of size 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;
}

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com