原创 malloc和free的實現原理

對於malloc來說,很多人都不陌生。然而,我們對它的瞭解並不是很深,我們常常會用,而不明白其中的原理,從而,很容易造成內存泄漏,內存碎片等問題。這常常讓我們頭痛不已,故而我們需要進一步的去了解它。首先,什麼事malloc?在很多人認爲ma

原创 我搬家了

我搬家了http://my.csdn.net/?c=799dd80325df0f2f593998e0b3261ed7

原创 Linux下時間戳格式和標準時間格式的轉換

大家都知道linux文件系統中的每個文件都有三種時間戳:訪問時間(atime——access time):就是上次訪問這個文件的時間。改變時間(ctime——change time):就是文件的inode改變的時間(什麼是inode?)當你

原创 各種字符串Hash函數

/// @brief BKDR Hash Function   /// @detail 本 算法由於在Brian Kernighan與Dennis Ritchie的《The C Programming Language》一書被展示而得 名,

原创 柔性數組

首先,我們來看一個題typedef struct list_t{ struct list_t *next; struct list_t *prev; char data[0]; }list_t;此時,你知道32位系統中,sizeof(lis

原创 堆棧的區別

要了解堆和棧的區別,我們首先要了解系統的分區BSS(Block Started by Symbol)通常是指用來存放程序中未初始化的全局變量和靜態變量的一塊內存區域.數據段(data segment)通常是指用來存放程序中已初始化的全局變量

原创 程序編譯過程

編譯程序(Compiler,compiling program)也稱爲編譯器,是指把用高級程序設計語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序。作爲一個程序員,我們應該瞭解它的過程,才能 更好的工作和學習。編譯過程課分爲下列

原创 智能指針

說起指針相信大家一定不陌生,那麼智能指針呢?首先,我們來看看,爲什麼要有智能指針?例如void Test2 () {      int* p1 = new int(2);      bool isEnd = true;      //..

原创 菜鳥初長成

  初次學習C語言是大一的時候,對於一個全部由字母和符號組成的,感覺到無趣和乏味。也許是天生對數字不敏感,也許是覺得沒用(寫半天只爲輸出一個hello),故而讓我覺得學習C語言真的很難。難到都不想學,從而真的明白了興趣是多麼重要。對於一個都

原创 註釋轉換

在我們寫代碼是有時要註釋,所以很多時候,我們都是ctrl+k+c.既然常常用到,我們不妨寫寫看看它是怎麼轉換的。一方面提高編程能力,另一方面,也可以提高自身的的思考和處理問題的能力。 首先,我們來思考註釋轉換一個有多少問題。 1.一般情況/

原创 常見的排序算法(四)( 歸併排序,計數排序 , 基數排序)

   歸併排序(MERGE-SORT)是建立在歸併操作上的一種有效的排序算法,該算法是採用分治法(Divide and Conquer)的一個非常典型的應用。將已有序的子序列合併,得到完全有序的序列;即先使每個子序列有序,再使子序列段間有序

原创 find命令淺析

 在Linux系統中查詢,功能有很多。但是,find是linux下最棒的命令之一,其查詢功能非常強大。接下來,我們便來看看其的強大之處。首先是find的語法:find [起始目錄] 尋找條件 操作 以下將詳細介紹find的大多數用法:工作方

原创 Linux下時間戳格式和標準時間格式的轉換

大家都知道linux文件系統中的每個文件都有三種時間戳:訪問時間(atime——access time):就是上次訪問這個文件的時間。改變時間(ctime——change time):就是文件的inode改變的時間(什麼是inode?)當你

原创 常見的排序算法(二) 選擇排序

選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。選擇排序:思想n個記錄的文件的直接選擇排序可經過n-

原创 柔性數組

首先,我們來看一個題typedef struct list_t{ struct list_t *next; struct list_t *prev; char data[0]; }list_t;此時,你知道32位系統中,sizeof(lis