我是C ++编码的新手,想知道我是否使用const char* ptr
并执行一个步骤,是否会发生内存泄漏。如果是,该如何解决?我无法显示确切的代码,但轮廓是
char letter[];
const char* lettrptr= *somefunc(argument)*;
strcpy(letter,lettrptr);
整个代码都正常。但是我怀疑const char* ptr
是否会发生内存泄漏,如果可以,该如何解决?
答案 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()
)。