首先,我不确定这是一个特定的平台错误。我正在使用openssl库生成大素数和私钥/公钥。当素数相对较小(128位)时,它运行正常,但是当素数越来越大(256,512位)时,我无法编译并得到错误。
DH * params = DH_new();
params = DH_generate_parameters(512, 5, NULL, NULL);
DH_generate_key(params); // can't get through this point when prime bits getting bigger
上面的代码产生了一个错误:
malloc: *** error for object 0x7ffba8403c88: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
我在MAC OX 10.8.2上使用openssl 1.0.1。我很感激任何建议。
UPDATE :产生此类错误的另一种方法是在上面的代码之前创建一个线程。无论哪种方式,它总是在子程序DH_generate_key上给我错误。
答案 0 :(得分:0)
与堆损坏相关的错误消息(例如来自malloc()
的此消息)表明您有内存管理错误,例如在释放后使用内存或超出分配的内存。这种malloc()
错误消息发生在与实际编程错误发生的位置不同的位置是正常的。在Valgrind中运行您的应用程序,以获取有关出错的有用信息。
与错误无关,但您在上面代码的这两行中有内存泄漏:
DH * params = DH_new();
params = DH_generate_parameters(512, 5, NULL, NULL);
指向已分配的DH
结构的指针在第二行中被覆盖,DH
返回一个新的DH_generate_parameters()
结构。 DH_new()
分配的缓冲区丢失。这不是错误消息的原因。