【发布时间】:2020-03-26 08:20:02
【问题描述】:
我正在使用 ARM 交叉工具链 arm-none-ebi-gcc 为嵌入式系统编码。因为代码运行的是freeRTOS,它有自己的堆内存管理,所以我想覆盖libc中的malloc()、free()和realloc()并将它们简单地包装起来以调用freeRTOS中的函数。只有一个问题,freeRTOS 没有 realloc(),这很奇怪,但我的代码肯定需要它。所以我想了解,如果我只覆盖 malloc() 和 free() 但仍将 realloc() 保留为 libc 中的版本,会发生什么?另外,我觉得提供我自己的 realloc() 只是用新的大小调用 malloc() 并在分配新的内存块后执行 memcopy 在我看来不够安全,因为新的大小通常大于旧的大小我的应用程序,所以当我执行一个大小大于实际分配的内存块的 memcopy() 时,可能会产生一些指针访问错误,这可能吗?
提前致谢。 -木质
【问题讨论】: