7.6为什么我的程序总是在malloc内部崩溃
问题:我的程序总是崩溃, 显然在malloc 内部的某个地方。但是我看不出哪里有问题。是malloc() 有bug 吗?
很不幸, malloc 的内部数据结构很容易被破坏, 而由此引发的问题会十分棘手。最常见的问题来源是向malloc 分配的区域写入比所分配的还多的数据; 一个常见的bug 是用malloc(strlen(s)) 而不是strlen(s) + 1。其它的问题还包括使用指向已经释放了的内存的指针, 释放未从malloc 获得的内存, 或者两次释放同一个指针, 或者试图重分配空指针, 参见问题7.25。
参见问题7.23, 16.7 和18.2。
很不幸, malloc 的内部数据结构很容易被破坏, 而由此引发的问题会十分棘手。最常见的问题来源是向malloc 分配的区域写入比所分配的还多的数据; 一个常见的bug 是用malloc(strlen(s)) 而不是strlen(s) + 1。其它的问题还包括使用指向已经释放了的内存的指针, 释放未从malloc 获得的内存, 或者两次释放同一个指针, 或者试图重分配空指针, 参见问题7.25。
参见问题7.23, 16.7 和18.2。