这是程序或计算机的内存泄漏吗?我该如何解决?

问题描述 投票:0回答:1

我正在练习编程和内存分配。当我在不使用valgrind的情况下执行程序时,该程序将运行并执行所需的操作。然后我用valgrind执行,看看是否有内存泄漏。这就是我用valgrind执行时得到的结果。我是新手,我找不到为什么我有这么多内存泄漏或错误。代码如下。谢谢!!

enter image description here

 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执行,看是否有内存泄漏...。

c memory memory-management memory-leaks valgrind
1个回答
0
投票

free函数中的fun语句永远不会执行,因为它之前的return语句。

© www.soinside.com 2019 - 2024. All rights reserved.