内存管理w/const char*和al_get_native_file_dialog_path()

Memory management w/ const char * and al_get_native_file_dialog_path()

本文关键字:native get file path dialog al 管理 const char 内存      更新时间:2023-10-16

我使用的是一个库函数,它返回一个const char*变量。以下是代码:

if (something) {
const char* file = get_filename();
save(file);
}

由于文件变量在块中,是否需要在块内解除分配该文件变量?

我使用的函数是al_get_native_file_dialog_path(),来自allegro 5库。

我试着搜索任何关于如何分配const char *变量的文档,但没有。。

由于文件变量在块中,是否需要在块内解除分配该文件变量?

作用域块内的(const)指针仍然只是一个指针。

当作用域被保留时,没有采取任何特殊操作(例如自动解除分配它所指向的内存)。

因此,除非我们知道是如何分配指针的,否则我们实际上无法判断

const char* file = get_filename();

可能类似

const char* get_filename() {
static const char* hardcoded_stuff = "TheFileName.txt";
return hardcoded_stuff;
}

const char* get_filename() {
const char* filename = new char[MAXFILENAME];
// ... determine and initialize filename ...
return filename;
}

第一个版本不需要从客户端释放内存,而第二个版本则需要。


我正在使用库函数。。。

表示您正在使用一些不受您控制的代码。因此,你必须参加该图书馆的文档,或者询问作者。


我曾试图搜索任何关于如何分配const-char*变量的文档,但一无所获。。

好吧,你在文档中检查过他们的例子吗?

我没有发现任何代码来解除分配用al_get_native_file_dialog_path()获得的指针。