程式除錯中,經常需要輸出記憶體資訊,以便進一步分析,
下面是我寫的乙個簡單的輸出函式
//sprintf(hex+i*3,"%02x ",str[i]&0xff);
//printf("0x%-3.2s",in + size * cur);中 "%-3.2s"表示輸出字串,
//寬度為3,精度為2(精度表示最多輸出兩個字元,多的捨去)左對齊,右填充空格。
//size:
轉換多少位元組的資料為字串
//outstrlen:
輸出空間大小,其實可以不要此引數,但為了安全起見新增了。
//char* hextostr(byte* buff,size_t size,char *poutstr,size_t outstrlen)
;//檢查輸出空間
if(outstrlen < size*3)
if (buff == null || size==0 )
for(;i
poutstr[i*3-1] = 0;
return poutstr;
}用法:
記憶體dump與休眠檔案
我們知道,當dll載入到記憶體之後,不管其原先是否加殼,其二進位制 都是完全解密的,某些時候,dll是需要授權的,嘿嘿嘿。記憶體dump可以將其二進位制資料全部dump出來,這樣,我們就可以使用該dll中的介面了,但是由於全域性變數和虛表之類的東西,所以該方法會很麻煩,自己需要處理的東西很多。今天聽...
c 記憶體區域劃分
c 中,記憶體分為5個區域 堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。其中 棧 就是那些編譯器在需要的時候分配,不需要的時候清理的變數的儲存區域,比如區域性變數和函式引數。在記憶體中連續儲存的區域,位址從低到高。堆 就是new分配的記憶體塊,需要delete。如果沒有delete,在程式退...
C C 記憶體區域 2
c 記憶體區域 c 記憶體區域分為 區 全域性資料區 堆區 棧區 文字常量區 1.區 各個函式 塊 存放二進位制 2.全域性資料區 存放全域性變數和靜態變數 3.堆區 存放動態資料 通過new,malloc等手工分配的記憶體 4.棧區 區域性變數 5.文字常量區 存放常量字串 1.堆區和棧區的區別 ...