基础知识练习
学生:我的 PC 有 8 兆内存。为什么我只能分配 640K 左右的内存?
小林:在 PC 兼容的分段结构下, 很难透明地分配超过 640K 的内存, 尤其是在 MS-DOS 下。
学生:我的程序总是崩溃, 显然在 malloc 内部的某个地方。但是我看不 出哪里有问题。是 malloc() 有 bug 吗?
小林:很不幸, malloc 的内部数据结构很容易被破坏, 而由此引发的问题会十分棘 手。最常见的问题来源是向 malloc 分配的区域写入比所分配的还多的数据; 一个 常见的 bug 是用 malloc(strlen(s)) 而不是 strlen(s) + 1。其它的问题还包括使用 指向已经释放了的内存的指针, 释放未从 malloc 获得的内存, 或者两次释放同一 个指针, 或者试图重分配空指针
正文完