简述几种内存泄漏的预防机制
用智能指针代替普通指针,由于智能指针自带引用计数功能,能够记录动态分配空间的引用数量,在引用计数为零时,自动调用析构函数释放空间。
借助一些内存泄漏检测工具,例如Valgrind、Memcheck。
养成良好的编程习惯:保证malloc和free、new和delete成对出现。
内存越界
内存越界也指内存访问越界,是指访问了所申请空间之外的内存。如果对越界的内存进行读操作,读取的结果具有随机性且无法预知;如果对越界的内存进行写操作,写入的结果可能破坏其他数据。
内存越界不属于语法错误,无法通过编译器发现,甚至程序运行初期也不会发生错误,直到某种特定情况下才会由于内存越界导致程序崩溃。
内损越界无法从根本上避免,只能预防。要求编程人员对操作的内存空间要有一个明确的认识。