小编Pav*_*voo的帖子

纠正字符串数组C的free()

这可能是一个新手的错误,但我很想知道我究竟做错了什么.

代码:

int main()
{
  int i =0;
  char ** nameslist;
  nameslist = malloc(5 * sizeof(char*));

  for (i=0; i <5; i++)
  {
      nameslist[i]=malloc((20+1)*sizeof(char));
  }

  nameslist[0]="John";
  nameslist[1]="Adam";
  nameslist[2]="Nick";
  nameslist[3]="Joe";
  nameslist[4]="Peter";

  for (i=0; i <5; i++)
  {
    free(nameslist[i]);
  }

  free(nameslist);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用Valgrind,我仍然看到堆中有内存泄漏 - 我该如何解决这个问题?我怀疑我的太空间太大了 - 但是,我怎么去解放我不一定使用的空间呢?

感谢任何提示!

c string malloc free

5
推荐指数
2
解决办法
1575
查看次数

标签 统计

c ×1

free ×1

malloc ×1

string ×1