今天我正在尝试将unsigned long
变量复制到unsigned char *
变量的内容中。
这样做的原因是,我写了一个RC4密码,要求密钥输入为unsigned char *
,我使用SYSTEMTIME
类来获取值&将它与随机生成的long
值组合以获取RC4的密钥 - 我将其用作用户创建的帐户的时间戳,以便在我的sqlite dbs中标记。
无论如何,我遇到的问题是我无法将ULONG
复制到PUCHAR
。
我试过
wsprintfA(reinterpret_cast<LPSTR>(ucVar), "%lu", ulVar);
我试过
wsprintfA((LPSTR)ucVar, "%lu", ulVar);
然而,在执行我的程序后,ucVar
中的结果只是空的,或者它甚至没有计算,并且使应用程序崩溃。
[编辑1]
我想也许memcpy
方法可行,所以我尝试声明另一个变量并将其移动到ucVar
,但它仍然使应用程序崩溃 - 即它没有到达{{1} }:
MessageBox()
[/ edit 1]
[编辑2]
在大小为64的ucVar上的HeapAlloc()解决了我的问题,谢谢你的建议![/ edit 2]
任何人都可以帮我解决这个问题吗?非常感谢!
此致 安德鲁
答案 0 :(得分:1)
除非您拥有自己想要使用的内存,否则会发生各种各样的事情。这可能是因为错误没有引起注意,因为没有其他任何东西已经拥有该内存,即时崩溃,一个值消失,因为其他东西会在您设置内存和尝试从中检索值之间覆盖内存。它
处理动态内存分配时相当基本的概念,但对于不熟悉的人来说却是一个陷阱。