簡體   English   中英

這個 memory 是從我的程序還是計算機中泄漏的? 我該如何解決?

[英]Is this memory leak from my program or the computer? How can I fix it?

我正在練習我的編程和 memory 分配。當我在沒有 valgrind 的情況下執行時,程序可以工作並且它可以完成它需要做的事情。 然后我用 valgrind 執行,看看我是否有任何 memory 泄漏。這是我用 valgrind 執行時得到的。 我有點新,我找不到為什么我有這么多 memory 泄漏或錯誤。 代碼如下。 謝謝!!

在此處輸入圖像描述

 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 }

function fun中的free語句永遠不會執行,因為它之前的return語句。

此外,您可以考慮使用vector<int>代替*k*l*s*t

例子:

#include <vector>
using namespace std;

vector<int> s;      
s[0]=1; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM