0

我最近在一次采访中被要求写信给函数——

  1. mymalloc 将返回到目前为止分配的内存地址的峰值。
  2. myfree 会告诉用户是否做了一些导致内存损坏的操作。例如。程序将内存地址从位置 101 分配到 200。如果程序在边界之外写入,即 101 和 200,则称为内存损坏。

注意:这些函数可以在内部使用 malloc 和 free 来分配和释放内存。

有人可以指导我吗?

4

1 回答 1

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

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

于 2013-03-30T08:03:37.760 回答