我是这个网站的新手,所以如果我在第一篇文章中出错了,请不要对我这么做。
这里什么都没有......
在我的应用程序中,我有以下代码:
wsprintf(hardware_info, "%ul+%ul", dwGPU, dwCPU);
hardware_info
存储为LPSTR,并作为参数通过引用传递给包含该行的函数(例如void do_something(IN LPSTR out){}
)
dwGPU
和dwCPU
显然是DWORD
或ul, unsigned long
数据类型。
当执行此应用程序时,它会在执行上面的代码行后立即崩溃(注意,它不会通过此行)。有人可以向我解释问题是什么吗?
编辑:
我已经解决了这个问题。我认为这更像是一个逻辑错误。
我混淆%ul
因为我认为它代表unsigned long
,但通过一些研究,我已经了解到它实际上%lu
,奇怪的是。
感谢为此做出贡献的任何人,这真的有助于我的想法。
答案 0 :(得分:1)
首先,如果您的hardware_info
是LPSTR
,那么您为什么要使用wsprintf
? wsprintf
适用于LPTSTR
。 LPSTR
是一个“常规”char指针,应该与sprintf
一起使用。您的格式字符串也是常规字符串,应该与sprintf
一起使用。如果项目是针对窄字符串设置的,那么您的代码将按原样编译和工作(即使用wsprintf
),但在此处使用wsprintf
仍然没有逻辑。
其次,我猜你没有为hardware_info
分配内存或分配不够。这可能是导致代码崩溃的原因。