c中的内存泄漏

时间:2011-01-05 09:11:17

标签: c++ c

以下代码会导致内存泄漏

char * a()
{
   char * b = malloc(100);
   return b;
 }

B()
{ 
  char * c = a();
  free (c);
}

6 个答案:

答案 0 :(得分:10)

没有。毕竟你正在释放分配的内存。一般规则是,如果您为每个free()函数调用调用malloc(),则表示您没有泄漏内存。

答案 1 :(得分:3)

没有

你正在一个()内部分配内存,返回一个指向那个你在B()中释放的内存的指针。

答案 2 :(得分:2)

在函数B()中,它肯定不会因为你正在调用而导致内存泄漏。但如果你调用a()而不调用free会导致内存泄漏,所以如果你得到一些内存泄漏并想知道它为什么会发生,那么看看你调用函数a()而不调用free的其他地方( )之后。

答案 3 :(得分:0)

没有。您分配内存,然后释放相同地址的内存(即使包含该地址的指针已被复制)。

答案 4 :(得分:0)

我不这么认为......为什么你认为它会导致泄漏? 您分配的内存与您释放的内存相同。

答案 5 :(得分:0)

它不会泄漏内存。你的函数a()将内存位置的地址返回到正被释放的函数b()。不要对不同功能中的内存分配和解除混淆。它将正常工作,因为你正在分配的内存是堆,这是两个函数e.i的公共区域。 a()& b()(只要它们在相同的地址空间中)。