绝密笔记 | 基础知识 | 每日一练(77)

基础知识练习

士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ——菜根谭

学生:我的 PC 有 8 兆内存。为什么我只能分配 640K 左右的内存?

小林:在 PC 兼容的分段结构下, 很难透明地分配超过 640K 的内存, 尤其是在 MS-DOS 下。

学生:我的程序总是崩溃, 显然在 malloc 内部的某个地方。但是我看不 出哪里有问题。是 malloc() 有 bug 吗?

小林:很不幸, malloc 的内部数据结构很容易被破坏, 而由此引发的问题会十分棘 手。最常见的问题来源是向 malloc 分配的区域写入比所分配的还多的数据; 一个 常见的 bug 是用 malloc(strlen(s)) 而不是 strlen(s) + 1。其它的问题还包括使用 指向已经释放了的内存的指针, 释放未从 malloc 获得的内存, 或者两次释放同一 个指针, 或者试图重分配空指针

正文完