GetMemory的典型例子

2021-07-25 17:39:04 字數 808 閱讀 4734

void getmemory (char *p)  

void test (void)

gcc編譯會出現段錯誤         

程式首先申請乙個char型別的指標str,並把str指向null(即str裡存的是null的位址,*str為null中的值為0),

呼叫函式 的過程  中做了如下動作:1、申請乙個char 型別的指標p,2、把str的內容copy到了p裡(這是引數傳遞過

程中系統所做的), 3、為p指標申請了 100個空間,4、返回test函式.最後程式把字元 串hello world拷貝到str指向

的記憶體空間裡.到這裡錯誤出 現了!str的空間始終為 null而並沒有實際的空間.     

在呼叫getmemory函式時為str分配了一塊記憶體,即改變了指標str指向的位址。但在跳出getmemory函式後剛才的

改變又失效 了,str的空間始終為null而並沒有實際的空間。這其實是乙個引數傳遞的問題,修改一級指標指需要傳

遞對應型別的二級指標。 

程式修改如下:

void getmemory (char **p) 

void test (void)

注意:要在函式內部改變某個變數的值,使之能在出了這個函式後,剛才的改變仍然有效,那就必須通過引數傳入「指向          

這個變數的指標」,而不是變數本身。也就是說,任何函式都不能把對引數本身的改變帶到函式體外,所改的只是          

這個引數所指向的變數的值。

大資料應用的幾個典型例子

時至今日網際網路每天新增的資料量達2.5 10 18位元組,而全球90 的資料都是在過去的兩年間創造出來的。舉個直觀的例子來說明一下網際網路的資料量 假設大西洋裡每一公升海水代表乙個位元組的資料,那麼整個大西洋儲存的資料也只能到2010年就滿了。從外行的角度看來大資料是個挺了不起的東西,它也確實了不...

組合語言典型例子詳解 組合語言典型例題

典型例題 與考試題型,考試範圍相近 應用程式具有 個基本段,可執行指令應該儲存於 aa 段b 資料段c 堆疊段d 附加段2.8 位補碼f3h 要擴充套件成 位補碼應該是 d,這樣其真值才不變。a f0f3h b 00f3h c 10f3h d fff3h 3.mov ebx 8 eax 指令的目的運...

關於BAT程式設計的幾個典型的小例子

1 messager 的使用情況。net send 192.168.211.122 hollo world 2 建立乙個bat檔案 net start messenger rem 啟動messenger服務 net start telnet rem 開啟遠端telnet服務 net user sys...