【发布时间】:2020-04-07 05:21:32
【问题描述】:
我在 Windows 上使用 C/C++ 程序的 Visual Studio 中收到“0xC0000005:访问冲突读取位置错误”,并试图简化以说明我的问题。下面的代码运行得很好:
char tmp[1000];
ULONG64 val1 = 1;
sprintf_s(tmp, 1000, "%lu, %s, %s", val1, "true", "false");
但是,当我在格式中添加一个额外的 unsigned long 时,我会遇到访问冲突,如下面的代码所示:
char tmp[1000];
ULONG64 val1 = 1;
ULONG64 val2 = 2;
sprintf_s(tmp, 1000, "%lu, %lu, %s, %s", val1, val2, "true", "false");
【问题讨论】:
-
"使用 C/C++ 程序" 没有像“C/C++”这样的语言。它可以是 C、 或 C++。您实际上在使用哪个?一旦你有了这个问题的答案:删除你不使用的语言标签。
-
小花絮并没有影响问题,但是从变量本身推导出缓冲区的大小而不是重复数字是非常明智的:
sprintf_s(tmp, sizeof tmp, ...)。如果您更改了一个而忘记更改另一个,这可以避免不愉快的意外。 -
该程序使用 Windows C 库,但我尽可能使用 C++,例如 std::string
-
@publicwireless 所以,然后是 C++。
-
@WeatherVane 这不是注释,而是答案!
标签: c windows visual-c++