0

我在 Visual Studio 中收到此错误:调试断言失败!表达式:(L"缓冲区太小" && 0)

它发生在以下代码行:

program_name = (char *) malloc(strlen(argv[0])+1);
strcpy_s(program_name,sizeof(program_name),argv[0]);

它似乎试图将字符数组复制到的缓冲区的大小太小,但我不知道为什么?

4

1 回答 1

3

sizeof(program_name)返回指向 的指针的大小char。那不是你想要的。将其替换为strlen(argv[0])+1以传递分配的缓冲区的大小。

但是,还要注意,在 C++ 中,最好只使用std::string

std::string program_name(argv[0]);
于 2013-10-16T03:12:52.137 回答