1

首先,我不确定这是一个特定的平台错误。我正在使用 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。我很感激任何建议。

更新:产生这种错误的另一种方法是在上述代码之前创建一个线程。无论哪种方式,它总是在子程序 DH_generate_key 处给我错误。

4

1 回答 1

0

与堆损坏相关的错误消息(例如此消息)malloc()表明您存在内存管理错误,例如在释放内存后使用内存,或超出分配的内存。此类malloc()错误消息出现在与实际编程错误发生位置不同的位置是正常的。在 Valgrind 中运行您的应用程序,以获取有关问题所在的一些有用信息。

与错误无关,但您在上面的这两行代码中存在内存泄漏:

DH * params = DH_new(); 
params = DH_generate_parameters(512, 5, NULL, NULL);

指向已分配DH结构的指针在第二行被 .DH返回的新结构覆盖DH_generate_parameters()。分配的缓冲区DH_new()丢失。但这不是错误消息的原因。

于 2013-02-16T22:54:53.157 回答