我正在练习编程和内存分配。当我在不使用valgrind的情况下执行程序时,该程序将运行并执行所需的操作。然后我用valgrind执行,看看是否有内存泄漏。这就是我用valgrind执行时得到的结果。我是新手,我找不到为什么我有这么多内存泄漏或错误。代码如下。谢谢!!
1 #include <stdio.h>
2 #include <stdlib.h>
3 int* fun(int *l){
4 int *k;
5 k = (int *)malloc (4*sizeof(int));
6 for(int i = 0; i<4; i++){
7 k[i] = 2*l[i];
8 l[i] += 1;
9 }
10 return k;
11 free(k);
11 }
12 int main(){
13 int *s;
14 int *t;
15 s = (int *)malloc (4*sizeof(int));
16 s[0] = 2; s[1] = -3; s[2] = 5; s[3] = 0;
17 t = fun(s);
18 for(int i = 0; i<4; i++){
19 printf(" %d %d\n", s[i], t[i]);
20 }
21 free(s);
22 free(t);
23 return 0;
24 }
我正在练习编程和内存分配。当我在不使用valgrind的情况下执行程序时,该程序将运行并执行所需的操作。然后我用valgrind执行,看是否有内存泄漏...。
free
函数中的fun
语句永远不会执行,因为它之前的return
语句。