Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c语言中的内存泄漏_C++_C - Fatal编程技术网

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你是对的,那是不友好的。我知道有人会回答他的问题,但有时最好尽量自学,然后问一些不太明显的问题。