原创 fork與vfork的區別[轉載學習]

1.vfork保證子進程先運行,在它調用exec或exit之後父進程纔可能被調度運行。如果在調用這兩個函數之前子進程依賴於父進程的進一步動作,則會導致死鎖。 2.fork要拷貝父進程的進程環境;而vfork則不需要完全拷貝父進程的進程

原创 《深度探索C++對象模型》讀書筆記——第一章(關於對象)

1.C++的封裝並不會增加布局成本,數據封裝和普通結構體一樣·,而行爲封裝,也不會增加。因爲非內聯函數,只會誕生一個實例。但是內聯函數,則會在每一個使用者上誕生一個實例。 C++在佈局上的額外負擔主要是由virtual機制引起的: (1)

原创 malloc與calloc的區別學習

在學習lighthttped的代碼時,裏面的內存申請用的都是calloc而不是我們慣用的malloc,於是學習一下兩者的區別: 函數原型: void *malloc( size_t size ); //分配的大小 void *call

原创 頭文件互相包含所引發的的問題(深入剖析)

今天寫程序出現了一個讓人蛋疼的錯誤,後來發現是由於頭文件互相包含所引起的。 原本只是簡單的以爲頭文件互相包含只會觸發,頭文件的遞歸包含。即,A包含B,所以才A的頭文件裏會將B的頭文件內容拷貝過來,然後B裏又包含A,又將A 拷貝一份,這樣就

原创 關於調用gethostbyname失敗的原因:Host name lookup failure.

調用gethostbyname失敗後的變量存儲在h_errno中,所以不能用perror打印,需要使用 Herror打印,打印後的錯誤爲Host name lookup failure. 原因是由於找不到用戶名對應的ip,所以進入/

原创 exit()與_exit()的區別(轉載學習)

              從圖中可以看出,_exit 函數的作用是:直接使進程停止運行,清除其使用的內存空間,並清除其在內核的各種數據結構;exit 函數則在這些基礎上做了一些小動作,在執行退出之前還加了若干道工序。exit() 函