關於Fork和Malloc的思考

2021-09-05 00:04:13 字數 1012 閱讀 8610

文章試讀

不拘乙個遍程式系列

:程式設計序不能乙個腦袋鑽到底,有時要學會變通,即所謂的曲線救國。一

、二、三、四

職場規劃:一些雜七雜八的職場感悟吧。不值錢的軟體人才

精力充沛與事業成功

讓係分來得更猛烈些吧

不值錢的系統分析師

經濟危機下大學生如何就業

我的詩歌:都是我的打油詩,但是很值得一讀。不要工作還衣食無憂之四難歌

香格里拉美人圖

寶寶:超可愛的小寶寶 寫部落格

考試培訓:主要是關於考研、軟考和等級的相關題解。2009考研試題分析

2023年12月程式設計師試題分析

2023年軟考備考全攻略

2023年5月程式設計師試題解析

有人問我,在父程序中malloc的記憶體空間,如果fork()後,到了子程序中,會不會在copy乙份出來?還是共用乙個空間?看程式:

執行結果:

[zyx@ymserver src]$ ../bin/t1    

p=0x8ea0008 ccc

child p=0x8ea0008 ccc3333

father p=0x8ea0008 ccc444

[zyx@ymserver src]$ child p=0x8ea0008 ccc3333

最開始,記憶體塊的值是ccc,位址為0x8ea0008

後來,先執行子程序的                strcpy(p, "ccc3333"); 發現,記憶體值變成了ccc3333

再父程序                strcpy(p, "ccc444"); 發現,記憶體值變成了ccc444

那麼是不是子程序的值被改變了呢?不是,看最後,子程序讀取的記憶體值還是ccc3333,就可以知道,父子程序各有一片空間。

那麼為什麼p的位址都是乙個地方呢?那是因為這個位址是乙個虛擬的位址,每個程序都擁有自己的虛擬位址空間,不同程序的相同位址空間其實在物理上是不同的位址塊!

注:上面的程式沒有加上錯誤判斷,測試程式而已,不用加了。

關於fork的小問題

在閱讀apue的時候,試著在cygwin中測試乙個源程式,如下 1 include 2 include 3 include 4 include 56 define maxline 512 7 static void sig int int 8 int main int argc,char argv ...

關於malloc函式的用法

一,函式宣告 malloc 向系統申請分配指定size個位元組的記憶體空間。返回型別是 void 型別。void 表示未確定型別的指標。c,c 規定,void 型別可以通過型別轉換強制轉換為任何其它型別的指標 如果分配成功則返回指向被分配記憶體的指標,否則返回空指標null。當記憶體不再使用時,應使...

關於malloc的返回位址

之前沒注意過malloc的返回值,今天又看到了這個位址空間說明,根據 linux unix系統程式設計手冊 的說明,當使用malloc申請比較小的空間時,返回值應該位於0x40000000以內,而當malloc申請的空間比較大時,會使用mmap的私有匿名對映實現,所以malloc的返回值應該大於0x...