(3 2)讀配置檔案 查洩漏 設定標題實戰

2021-09-12 08:05:49 字數 1957 閱讀 5623

//(1.1)前提內容和修改

//使用配置檔案,使我們的伺服器程式有了極大的靈活性,是我們作為伺服器程式開發者,必須要首先搞定的問題;

//以#號開頭的行作為注釋行(注釋行可以有中文)

//我們這個框架(專案),第乙個要解決的問題是讀取配置檔案中的配置項(讀到記憶體中來);

//(1.2)配置檔案讀取功能實戰**

//寫**要多顧及別人感受,讓別人更容易讀懂和理解,不要刻意去炫技;這種炫技的人特別討厭;

//該縮排的必須要縮排,該對齊的要對齊,該注釋的要注釋,這些切記

//valgrind:幫助程式設計師尋找程式裡的bug和改進程式效能的工具集。擅長是發現記憶體的管理問題;

//裡邊有若干工具,其中最重要的是memcheck(記憶體檢查)工具,用於檢查記憶體的洩漏;

//a)使用未初始化的記憶體

//b)使用已經釋放了的記憶體

//c)使用超過malloc()分配的記憶體

//d)對堆疊的非法訪問

//e)申請的記憶體是否有釋放*****

//f)malloc/free,new/delete申請和釋放記憶體的匹配

//g)memcpy()記憶體拷貝函式中源指標和目標指標重疊;

//所有應該釋放的記憶體,都要釋放掉,作為伺服器程式開發者,要絕對的嚴謹和認真

//格式:

//valgrind --tool=memcheck 一些開關 可執行檔名

//--tool=memcheck :使用valgrind工具集中的memcheck工具

//--leak-check=full : 指的是完全full檢查記憶體洩漏

//--show-reachable=yes :是顯示記憶體洩漏的地點

//--trace-children = yes :是否跟入子程序

//--log-file=log.txt:講除錯資訊輸出到log.txt,不輸出到螢幕

//最終用的命令:

//valgrind --tool=memcheck --leak-check=full --show-reachable=yes ./nginx

//檢視記憶體洩漏的三個地方:

//(1) 9 allocs, 8 frees 差值是1,就沒洩漏,超過1就有洩漏

//(2)中間諸如: by 0x401363: cconfig::load(char const*) (ngx_c_conf.cxx:77)和我們自己的源**有關的提示,就要注意;

//(3)leak summary:definitely lost: 1,100 bytes in 2 blocks

原理和實現思路分析

//argc:命令列引數的個數

//ar**:是個陣列,每個陣列元素都是指向乙個字串的char *,裡邊儲存的內容是所有命令列引數;

//./nginx -v -s 5

//argc = 4

//ar**[0] = ./nginx ----指向的就是可執行程式名: ./nginx

//ar**[1] = -v

//ar**[2] = -s

//ar**[3] = 5

//比如你輸入 ./nginx -12 -v 568 -q gess

//ar**記憶體之後,接著連續的就是環境變數引數資訊記憶體【是咱們這個可執行程式執行時有關的所有環境變數引數資訊】

//可以通過乙個全域性的environ[char **]就可以訪問

//environ記憶體和ar**記憶體緊緊的挨著

//修改可執行程式的實現思路:

//(1)重新分配一塊記憶體,用來儲存environ中的內容;

//(2)修改ar**[0]所指向的記憶體;

讀配置檔案

tchar szpath max path memset szpath,0,sizeof szpath getmodulefilename null,szpath,max path cstring strpath szpath strpath strpath.left strpath.reverse...

讀配置檔案2

資料 host 1 ip 16.173.234.228 port 21,80,873,3306 cpu 10 freemem 3 conconn 1000 checkgw 1 freedisk 10 swapused 30000 host host 2 ip 16.173.235.25 port 2...

Php讀配置檔案

馬永佔,myz,mayongzhan php讀配置檔案 馬永佔,myz,mayongzhan 要讀的格式 php.ini this is demo by 馬永佔 myz global i 1j 2 k 3 self a 11 b 22 c 33 讀的方法 name test4.php date mo...