儲存區的劃分:
(1)棧區:棧區儲存區域性變數,棧區的記憶體是由系統自動管理,系統開闢,系統**,無需程式設計師管理.
(2)堆區:通過堆區記憶體分配函式,分配的空間都在堆區,堆區的最大特點:堆區的空間需要程式設計師手動管理,手動開闢,手動釋放.(oc常用)
(3)常量區:對於字元常量,整型常量,浮點型常量,字串常量統一儲存在該區,該區的記憶體由系統自動管理,特點:常量去的內容不能修改
(4)靜態區,全域性區:儲存全域性變數,以及靜態變數.記憶體由系統管理但是在程式的執行期間空間都不會釋放
(5)**區:編譯之後形成的cpu指令儲存在該區
概念:區域性變數:在函式內部定義的變數,陣列.(棧區)
全域性變數:在函式外部定義的變數,陣列.(全域性區)
靜態變數:由static修飾的變數.(靜態區)
棧區記憶體的錯誤使用方式
棧區的記憶體位址不能作為函式的返回值
原因(season):棧區的內存在函式執行完畢之後空間已經被系統**,不能再訪問
解決方案:讓空間在函式執行完畢之後系統不**空間即可,定義成全域性變數,或者靜態變數.或者在堆區開闢空間
1.野指標錯誤
產生原因:訪問不該訪問(已經沒有使用權,空間已經釋放還給系統)的記憶體
解決方案:釋放記憶體的所有權的同時,將位址也清除掉.
p = null;//指向無效的空間
2.過度釋放
產生原因:對一塊記憶體釋放(free)多次
解決方案:保證只釋放(free)一次,將其他的釋放操作刪除掉.(過度釋放會立即crash)
3.記憶體洩漏
產生原因:分配了記憶體,使用完之後,沒有釋放掉,造成記憶體堆積,最後會因為沒有記憶體可分配,而造成程式crash
解決方案:記憶體使用完之後立即釋放掉
/其他記憶體分配函式
calloc(n, size) 分配n塊,size大小的空間
calloc 和 malloc相比,calloc分配完空間之後,將資料清除,空間清零
整形陣列大小的空間,由5個元素
int *p = calloc(5, 4);// 分配20個位元組(連續), 分配完之後對分配空間清零,也就是申請的記憶體空間會初始化成 0
realloc(位址, newsize),給定乙個位址,從該位址開始按新的記憶體空間大小重新分配./*
malloc(<#size_t#>)
realloc(<#void *#>, <#size_t#>)
calloc(<#size_t#>, <#size_t#>)
都是用在堆區 */
記憶體操作函式, 既可以用於堆記憶體也可以用於棧記憶體
/**void *memset(void *s, int c, size_t n); 可以用在棧區,也可以用在堆區
s開始,長度為n的所有位元組賦值為c
通常用於清除結構體或者陣列資料.
例如student *p = calloc(5, sizeof(student));
memset(p, 0, sizeof(student));
void *q = malloc(100);
memset(q, 0, 100);//清零操作, */
/***void *memcpy(void *dest, const void *source, size_t n);
從source拷貝n個位元組到dest中
例如:
student *p = malloc(sizeof(student));
strcpy(p->name, "zhangsan");
p->age = 20;
student *q =malloc(sizeof(student));
memcpy(q, p, sizeof(student)); */
/*** int memcmp(const void *buf1,const void *buf2, unsigned int count);
記憶體比較結果分為 >0 <0 =0
const void *buf1 const void *buf2 兩個比較體
每個位元組每個位元組相比
unsigned int count比較次數
*/
不得不重視的問題 資訊太多!資訊太雜!
原文出處 http www.cnblogs.com zhouyinhui archive 2008 12 03 1346867.html 這段時間一直為這個問題所煩惱,在我獨自尋求解決方案的同時,也很想聽聽大家的經驗與意見。不過注意討論範圍 是個人,不是團隊,但不妨借助團隊經驗。所謂資訊太多太雜即是...
討論 不得不重視的問題 資訊太多!資訊太雜!
討論 不得不重視的問題 資訊太多!資訊太雜!周銀輝所謂資訊太多太雜即是 每天我們將接收到很多很多的資訊 資料 計畫等等 下文統稱 資訊 如何處理這些資訊,如何儲存這些資料,如何跟蹤這些計畫變得尤為重要。否則,多較長一段時間後,很多資料丟失了,計畫沒有得以跟蹤而被耽誤了,即便沒有丟失,查詢起來也很不方...
構建大資料網路不得不重視的6個問題
在我們考慮大資料時,我們注意到了 大 這個字,但是在建設基礎架構時,我們還應該注意 分布式 事實上,大資料應用程式需要處理大規模資訊,而且在出於彈性的考慮將資料複製到多個位置時,資訊的規模變得越來越大。但是,大資料的最重要屬性並不在於它的規模,而在於它將大作業分割成許多小作業的能力,它能夠將處理乙個...