以下代码会导致内存泄漏
char * a()
{
char * b = malloc(100);
return b;
}
B()
{
char * c = a();
free (c);
}
答案 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()(只要它们在相同的地址空间中)。