原创 寬字符鏈接庫函數會出現錯誤

我們都知道如何獲得字符串的長度。例如,如果我們已經像下面這樣定義了一個字符串指針: char * pc = "Hello!" ; iLength = strlen (pc) ; 這時變量iLength將等於6,也就是字符串中的字符數。 w

原创 詳談C/C++內存分配

一、預備知識—程序的內存分配一個由C/C++編譯的程序佔用的內存分爲以下幾個部分1、棧區(stack)— 由編譯器自動分配釋放,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中的棧。2、堆區(heap) — 一般由程序員分配釋

原创 Big Endian 和 Little Endian

Big Endian 和 Little Endian 一、字節序談到字節序的問題,必然牽涉到兩大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。 PowerPC系列採用big endian方式存

原创 線性表 - 雙鏈表(非循環)

S1雙鏈表定義1)雙(向)鏈表中有兩條方向不同的鏈,即每個節點中除next域存放後繼結點地之外,還增加一個指向其直接前驅的指針域prior。2)哨兵節點時隔啞對象,可以簡化邊界條件。S2雙鏈表前插與刪除節點操作1)雙向鏈表的前插操作。(由

原创 16位彙編讀取CMOS時間並顯示

;*************************************** ; 程序功能:讀取CMOS時間並顯示 ; CMOS讀寫方法如下: ; 1.向地址端口70H寫入要訪問的單元地址 ; 2.從71H端口讀出數據 ; 注意:CM

原创 簡單緩衝區溢出示例

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> unsigned char shellcode[] = "\xEB\x42\

原创 Windows下控制檯輸出

控制檯輸出就象dos下的輸出,可不是圖形界面。象ping/ipconfig/ftp等命令都是這類程序。     回憶過去,在dos下進行文件操作時,常用到“文件把柄”的概念,使用文件把柄操作時,非常方便,操作時,只要知道把柄號就可以,而

原创 關於STDCALL、CDECL、PASCAL調用分析

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 1.asm ; 調用方式 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

原创 WIN7下可執行的ShellCode

#include <windows.h> #include <stdio.h> int main() { byte shellcode[] = { 0xE9, 0x96, 0x00, 0x00, 0x00, 0x56, 0x31,

原创 編寫高效C語言的四大絕招

編寫高效簡潔的C語言代碼,是許多軟件工程師追求的目標。本文就是針對編程工作中的一些體會和經驗做相關的闡述。 第一招:以空間換時間 計算機程序中最大的矛盾是空間和時間的矛盾,那麼,從這個角度出發逆向思維來考慮程序的效率問題,我們就有了解

原创 VC使用Zlib對內存流進行壓縮與解壓縮

//zlib官網 "http://zlib.net/" //在工程根目錄放入文件 //zlib.h //zlib.lib //zconf.h //加載Zlib相應的函數以及庫 #include "zlib.h" #pragma comme

原创 提高vmware虛擬機運行速度

提高vmware虛擬機運行速度的方法,如下幾個方面: 1、修改合適的內存空間,不要過大設置,內存佔比約你的內存容量的1/3。否則可能引起宿主機的內存

原创 物理地址與線性地址詳解

1. Linear Space & Physical Space     在硬件工程師和普通用戶看來,內存就是插在或固化在主板上的內存條,它們有一定的容量——比如64 MB。但在應用程序員眼中,並不過度關心插在主板上的內存容量,而是他們

原创 內聯彙編計算2個16進制的大數

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> int main( void ) { //