C++ c语言中的内存泄漏
以下代码是否会导致内存泄漏C++ c语言中的内存泄漏,c++,c,C++,C,以下代码是否会导致内存泄漏 char * a() { char * b = malloc(100); return b; } B() { char * c = a(); free (c); } 不,你毕竟是在释放分配的内存。一般规则是,如果您正在为每个malloc()函数调用调用free(),那么这意味着您没有泄漏内存 不。毕竟,您正在释放分配的内存。一般规则是,如果您正在为每个malloc()函数调用调用free(),那么这意味着您没有泄漏内存 没有 您正在a()中
char * a()
{
char * b = malloc(100);
return b;
}
B()
{
char * c = a();
free (c);
}
不,你毕竟是在释放分配的内存。一般规则是,如果您正在为每个
malloc()
函数调用调用free()
,那么这意味着您没有泄漏内存 不。毕竟,您正在释放分配的内存。一般规则是,如果您正在为每个malloc()
函数调用调用free()
,那么这意味着您没有泄漏内存 没有
您正在a()中分配内存,返回指向该内存的指针,并在B()中释放该内存。否
在a()中分配内存,返回指向该内存的指针,在B()中释放。否。分配内存,然后在同一地址释放内存(即使包含该地址的指针已被复制)。否。分配内存,然后在同一地址释放内存(即使包含该地址的指针已被复制)。我不这么认为……为什么您认为它会导致泄漏?
您分配的内存与释放的内存相同。我不这么认为……为什么您认为它会导致泄漏?
分配的内存与释放的内存相同。它不会泄漏内存。函数a()将内存位置的地址返回给函数b()正在释放。请不要混淆不同函数中内存的分配和取消分配。这将正常工作,因为您正在分配的内存位于堆上,这是两个函数的公共区域,即a()&b()(只要它们位于相同的地址空间中)。它不会泄漏内存。您的函数a()正在将内存位置的地址返回给正在释放的函数b()。请不要混淆不同函数中内存的分配和取消分配。这将正常工作,因为您正在分配的内存位于堆上,这是两个函数的公共区域,例如a()&b()(只要它们位于相同的地址空间中).在函数B()中,它肯定不会导致内存泄漏,因为您正在调用free。但是,如果您在未调用free()的情况下调用a(),它将导致内存泄漏,因此,如果您遇到一些内存泄漏并想知道为什么会发生这种情况,请查看其他地方您在未调用free()的情况下调用函数a()之后。在函数B()中,它肯定不会导致内存泄漏,因为您正在调用free。但是,如果您在未调用free()的情况下调用a(),它将导致内存泄漏,因此,如果您遇到一些内存泄漏并想知道为什么会发生这种情况,请查看其他地方您在未调用free()的情况下调用函数a()之后。请读一本书。@GMan:你应该指出第二个函数需要用返回类型声明,即
void B()
“这不是有效的C++”可能对操作毫无帮助。@frast:“否”一词回答了这个问题,占用的字母更少,让你看起来不像以前那么不友好“请读一本书”。@JeremyP你是对的,这是不友好的。我知道有人会回答他的问题,但有时最好尽量自学,然后问一些不太明显的问题。请读一本书。@GMan:你应该指出第二个函数需要用返回类型声明,即void B()
“这不是有效的C++”可能对OP毫无帮助。@frast:“否”这个词回答了这个问题,用的字母更少,让你看起来不像“请读一本书”那么不友好“@JeremyP你是对的,那是不友好的。我知道有人会回答他的问题,但有时最好尽量自学,然后问一些不太明显的问题。