内存管理w/const char*和al_get_native_file_dialog_path()
Memory management w/ const char * and al_get_native_file_dialog_path()
我使用的是一个库函数,它返回一个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()
获得的指针。
相关文章:
- Cpp-Tuple使用带有变量的get
- 通过 get-Method 访问变量在类外不起作用
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- Android Java USB for native cpp
- Boost.Asio/OpenSSL HTTPS GET certificate trouble
- C++中是否有任何函数等同于python中字典的get函数?
- 使用istringstearm和get行缓慢读取文件
- 如何将 c++ get 函数代码转换为 opencv 算法中使用的 python
- React Native (Android):无法通过 JNI 在 jobject 中返回字符串
- 使用 cin.get() 初始化字符数组
- std::variant<>::get() 不能使用 Apple LLVM 10.0 编译
- 编写 cin.get() 以接收字符数组时出现问题
- 作用域枚举和标准::get
- Visual Studio 2017 中的 cpprestapi 问题找不到 POST/GET 常量
- 在 C++/C 中使用 CURL 发出带有数据文件的 GET HTTP 请求
- 使用"push_back"作为带有"get"函数C++的向量
- 使用 cin.get 读取字符数组
- 如何使用 fstream 的 .get 字符串?
- std::get like (partial) template specialization