gpt4 book ai didi

C++ GetModuleFileName 访问冲突

转载 作者:行者123 更新时间:2023-11-28 06:41:52 25 4
gpt4 key购买 nike

我试图通过使用这段代码将当前的可执行路径获取到一个字符串中(我也尝试过它的其他几个版本,但它们都没有真正起作用,我总是在某些时候遇到访问冲突)

char *filename = new char[MAX_PATH + 1];
GetModuleFileName(NULL, filename, MAX_PATH);
string exe = filename;

由于某种原因,这在第一行出现访问冲突而失败。我错过了什么?

最佳答案

此版本进行错误检查,并且还尊重 GetModuleFileNameTCHAR 的 一起工作(第二个参数是 LPTSTR,这是一个指向 TCHAR 的指针。

#include <windows.h>
#include <string>

typedef std::basic_string<TCHAR> TCharString;

int main()
{
TCHAR filename[MAX_PATH + 1];
if ( GetModuleFileName(NULL, filename, MAX_PATH) != 0 )
{
TCharString strExe = filename;
}
}

请注意,由于 GetModuleFileNameTCHAR 一起使用,因此盲目使用 std::string 作为字符串类型是不正确的。相反,创建一个基于 TCHAR 的字符串类型。

其次,进行错误检查以确保我们不会将无效字符串分配给字符串对象。

关于C++ GetModuleFileName 访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25831101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com