内存峰值和内存损坏使用malloc和free

时间:2013-02-07 14:39:18

标签: memory-management malloc free

我最近在接受采访时被要求写信 -

  1. mymalloc将返回到目前为止分配的内存地址的峰值。
  2. myfree将告诉用户是否进行了一些内存损坏的操作。例如。程序从位置101到200分配存储器地址。如果程序在边界外写入,即101和200,则称其存在内存损坏。
  3. 注意:这些函数可以在内部使用malloc和free来分配和释放内存。

    有人可以指导我。

1 个答案:

答案 0 :(得分:1)

  1. mymalloc可以使用sbrk(0)的值来检查程序堆中断的当前位置。

  2. 检查损坏部分有点棘手。如果您只是想确保修改200之后的字节,那么这可以实现。由于每个内存分配在分配的缓冲区大小之前都有一个标头,用于存储分配的大小,因此您可以检查下一个块的标头,即存储在201位的标头,以确保程序跨越其边界写入201。 / p>