1.內存泄漏
內存泄漏指因爲疏忽或錯誤造成程序未能釋放已經不再使用的內存情況。內存泄漏並不是指內存在物理上的消失,而是應用程序分配某段內存後,因爲設計錯誤,失去了對該段內存的控制,因而造成了內存的浪費。
2.內存泄漏分類
堆內存泄漏
堆內存指的是程序執行中依據須要分配通過malloc/calloc/realloc/new等從堆中分配的一塊內存,用完後必須通過調用相應的free或者delete刪掉。假設程序的設計錯誤導致這部分內存沒有被釋放,那麼以後這部分空間將無法在被使用,就會產生堆內存泄漏
系統資源泄漏
指程序使用系統分配的資源,比方套接字,文件描述符,管道等沒有使用對於的函數釋放調,導致系統的資源浪費,嚴重可導致系統效能減少,系統執行不穩定。
3.避免內存泄漏
常用rall思想或者智能指針來管理資源。
如何在一次在堆上申請4G的內存
#include<iostream>
using namespace std;
int main()
{
void* p = new char[0xfffffffful];//4G=4*1024*1024*1024
cout << "new:" << p << endl;
return 0;
}
//在64的平臺下運行