无法释放返回的char指针

时间:2018-03-18 17:07:01

标签: c malloc free

我在库中定义了一个函数,我使用-lcrypto引用了gcc 这是头文件

中的定义

unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md);

定义https://github.com/openssl/openssl/blob/master/crypto/sha/sha256.c#L63

该函数将char指针作为第三个参数,用结果填充它,然后返回它。

如果我将NULL作为第三个参数传递,该函数会创建一个指针并忽略它,然后返回它。

我知道为了返回一个指针,它必须在堆上分配,因此必须调用malloc

但是当我调用这个函数时

unsigned char * hash = SHA256((char*) &bh, sizeof(struct DIGEST), NULL);

我希望hash成为指向内存地址的指针,因此我运行free(hash)然后失败。

free(): invalid pointer: 0x00007f301f7958a0 ***
Aborted (core dumped)

哪些假设是错误的?

0 个答案:

没有答案