malloc(): corrupted top size
前言
写一个加密算法,在加密完成之后输出结果时抛出此错误。
看了一下百度上的说法,说是malloc函数的问题,我仔细检查了一下我的malloc语句。
没有越界,没有返回空指针,其他相关的内容也是正常的。
处理
多次调试之后发现是加密函数出现了越界(但是不能完全说是越界,因为我申请的内存空间是刚好的)。
在原本申请的内存大小的前提下我加了9字节,它就可以正常输出了。
很奇怪的一个BUG,因为我的加密函数或者输出函数均未越界,但是它却抛出此报错。
加密函数中如果添加printf语句则可以在不调整内存大小的情况下输出正常的内容。
// 这条是我申请内存的代码
size_t size = 16;
uint8_t *buf = (uint8_t *)malloc(size * sizeof(uint16_t));
// 加密函数需要32字节的空间
BUG根源
在加密函数内的一个下标值越界了,由于我使用的是一个特殊的循环方式,所以一直没有发现问题所在。