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根源

在加密函数内的一个下标值越界了,由于我使用的是一个特殊的循环方式,所以一直没有发现问题所在。