Realloc实现
我正在以以下形式编写一个简单的基于链表的内存管理器: …标题|块|标题|块。。。使用和免费列表Realloc实现,c,memory,realloc,C,Memory,Realloc,我正在以以下形式编写一个简单的基于链表的内存管理器: …标题|块|标题|块。。。使用和免费列表 如果要求realloc()函数减小块的大小,是否可以用新创建的块的头覆盖一些尾随字节?我读过的文档表明这是“未定义的行为”,但应用程序是否依赖仍然存在的数据?当然。它已被重新分配,因此现在它已由应用程序发布,属于您的经理。开始用新指针敲击它是正常的。当然。它已被重新分配,因此现在它已由应用程序发布,属于您的经理。开始用新指针对其进行重击是正常的。关于未定义行为的评论很可能是这样的:“当realloc返
如果要求realloc()函数减小块的大小,是否可以用新创建的块的头覆盖一些尾随字节?我读过的文档表明这是“未定义的行为”,但应用程序是否依赖仍然存在的数据?当然。它已被重新分配,因此现在它已由应用程序发布,属于您的经理。开始用新指针敲击它是正常的。当然。它已被重新分配,因此现在它已由应用程序发布,属于您的经理。开始用新指针对其进行重击是正常的。关于未定义行为的评论很可能是这样的:“当realloc返回时,访问块结束后的任何字节都是未定义的”
这样的规范正好允许您在realloc的实现中将头放入尾部字节。它是未定义的行为,这意味着如果应用程序试图读取字节(概念上已经消失),它将读取您的头,这对应用程序来说是垃圾;如果它甚至写入,它将杀死您的头-因此应用程序不应该这样做。最有可能的是,关于未定义行为的评论是这样的:“当realloc返回时,访问块结束后的任何字节都是未定义的” 这样的规范正好允许您在realloc的实现中将头放入尾部字节。它是未定义的行为,这意味着如果应用程序试图读取字节(概念上已经消失),它将读取您的头,这对应用程序来说是垃圾;如果它甚至写,它会杀死你的头-所以应用程序不应该这样做