我在库中定义了一个函数,我使用-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)
哪些假设是错误的?