Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Realloc实现_C_Memory_Realloc - Fatal编程技术网

Realloc实现

Realloc实现,c,memory,realloc,C,Memory,Realloc,我正在以以下形式编写一个简单的基于链表的内存管理器: …标题|块|标题|块。。。使用和免费列表 如果要求realloc()函数减小块的大小,是否可以用新创建的块的头覆盖一些尾随字节?我读过的文档表明这是“未定义的行为”,但应用程序是否依赖仍然存在的数据?当然。它已被重新分配,因此现在它已由应用程序发布,属于您的经理。开始用新指针敲击它是正常的。当然。它已被重新分配,因此现在它已由应用程序发布,属于您的经理。开始用新指针对其进行重击是正常的。关于未定义行为的评论很可能是这样的:“当realloc返

我正在以以下形式编写一个简单的基于链表的内存管理器:

…标题|块|标题|块。。。使用和免费列表


如果要求realloc()函数减小块的大小,是否可以用新创建的块的头覆盖一些尾随字节?我读过的文档表明这是“未定义的行为”,但应用程序是否依赖仍然存在的数据?

当然。它已被重新分配,因此现在它已由应用程序发布,属于您的经理。开始用新指针敲击它是正常的。

当然。它已被重新分配,因此现在它已由应用程序发布,属于您的经理。开始用新指针对其进行重击是正常的。

关于未定义行为的评论很可能是这样的:“当realloc返回时,访问块结束后的任何字节都是未定义的”


这样的规范正好允许您在realloc的实现中将头放入尾部字节。它是未定义的行为,这意味着如果应用程序试图读取字节(概念上已经消失),它将读取您的头,这对应用程序来说是垃圾;如果它甚至写入,它将杀死您的头-因此应用程序不应该这样做。

最有可能的是,关于未定义行为的评论是这样的:“当realloc返回时,访问块结束后的任何字节都是未定义的”

这样的规范正好允许您在realloc的实现中将头放入尾部字节。它是未定义的行为,这意味着如果应用程序试图读取字节(概念上已经消失),它将读取您的头,这对应用程序来说是垃圾;如果它甚至写,它会杀死你的头-所以应用程序不应该这样做