wsprintf()崩溃我的应用程序

时间:2015-04-28 00:46:15

标签: c++ visual-studio type-conversion

我是这个网站的新手,所以如果我在第一篇文章中出错了,请不要对我这么做。

这里什么都没有......

在我的应用程序中,我有以下代码:

wsprintf(hardware_info, "%ul+%ul", dwGPU, dwCPU);

hardware_info存储为LPSTR,并作为参数通过引用传递给包含该行的函数(例如void do_something(IN LPSTR out){}

dwGPUdwCPU显然是DWORDul, unsigned long数据类型。

当执行此应用程序时,它会在执行上面的代码行后立即崩溃(注意,它不会通过此行)。有人可以向我解释问题是什么吗?

编辑:

我已经解决了这个问题。我认为这更像是一个逻辑错误。 我混淆%ul因为我认为它代表unsigned long,但通过一些研究,我已经了解到它实际上%lu,奇怪的是。

感谢为此做出贡献的任何人,这真的有助于我的想法。

1 个答案:

答案 0 :(得分:1)

首先,如果您的hardware_infoLPSTR,那么您为什么要使用wsprintfwsprintf适用于LPTSTRLPSTR是一个“常规”char指针,应该与sprintf一起使用。您的格式字符串也是常规字符串,应该与sprintf一起使用。如果项目是针对窄字符串设置的,那么您的代码将按原样编译和工作(即使用wsprintf),但在此处使用wsprintf仍然没有逻辑。

其次,我猜你没有为hardware_info分配内存或分配不够。这可能是导致代码崩溃的原因。