想知道const char * ptr是否导致任何内存泄漏,

时间:2018-08-16 06:17:08

标签: c++14

我是C ++编码的新手,想知道我是否使用const char* ptr并执行一个步骤,是否会发生内存泄漏。如果是,该如何解决?我无法显示确切的代码,但轮廓是

char letter[];
const char* lettrptr= *somefunc(argument)*;
strcpy(letter,lettrptr);

整个代码都正常。但是我怀疑const char* ptr是否会发生内存泄漏,如果可以,该如何解决?

2 个答案:

答案 0 :(得分:1)

使用const char *或任何其他类型都不是内存泄漏。

在不再需要内存后,由于没有释放内存而导致内存泄漏。

对于您而言,您具有函数somefunc。它是由您或他人编写的。无论如何,您必须找出该函数是否希望调用者释放内存。

由于const,该函数很可能不希望您释放内存,但是为了安全起见,您还是应该进行检查。

答案 1 :(得分:0)

要视情况而定。

somefunc()是否为字符串分配内存?还是返回指向静态分配对象的指针?

在第一种情况下,somefunc()将把调用结果返回到malloc()(或calloc()或类似的函数)。在这种情况下,该内存可能会泄漏,因此您需要free()

在第二种情况下,somefunc()将返回char*,它可以是全局或局部静态值,例如以下之一:

char global_str[] = "Hello";

const char *somefuncA()
{
  return global_str;
}

const char *somefuncB()
{
  static char static_str[] = "World";
  return static_str;
}

如果是上述情况之一,则内存不会泄漏(并且您不得尝试free())。