0

我使用 sprintf 方法将数据格式化为我想写入文件的字符串,在 C++ 控制台应用程序中使用 VS 2008。输入是一个特定的消息,它有各种变量和值(例如:类型'int'和值' 10' / 键入字符串和值“abc”等)当我发送两条消息时,它工作得很好。但是当我发送两个以上的消息时,它会给出一个运行时错误,说0xC0000005: Access violation reading location 0xabababab。为什么会这样?是因为方法 'sprintf' 具有默认缓冲区长度吗?我该如何克服这个问题?

4

2 回答 2

1

不,没有默认大小。它将假设有足够的空间,并写入格式化字符串指定的尽可能多的内容。

您的访问冲突说reading,这暗示您的参数可能有问题,也许它们与格式字符串不匹配。

%您需要具有与在格式化字符串中使用 -codes引用的参数一样多、类型正确且顺序正确的参数。

于 2010-03-31T08:50:36.903 回答
1

顺便说一句,您可能想看看这个页面

0xABABABAB :被微软的 HeapAlloc() 用于在分配堆内存后标记“无人区”保护字节

于 2010-06-08T20:36:05.580 回答