PIXNET Logo登入

小弟弟

跳到主文

這裡紀錄小弟弟平常玩Linux的點點滴滴,一鍵一鼠的回憶。 以及平日突發奇想、放空的心情。 沒有這樣的心,也就沒有這樣的小弟弟存在。

部落格全站分類:不設分類

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 5月 21 週三 200819:51
  • C++ Windows 上 切割檔案路徑 的公用函式

C++真是越寫越好玩,今天又發現一個好玩的函式 _tsplitpath_s
這是用來將檔案路徑切分出 磁碟代號 資料夾 檔名 副檔名
先宣告四個字串
TCHAR strDrive[_MAX_DRIVE];        // 磁碟代號
TCHAR strDir[_MAX_DIR];                 // 資料夾
TCHAR strFile[_MAX_FNAME];         // 檔名
TCHAR strExt[_MAX_EXT];                // 副檔名
(繼續閱讀...)
文章標籤

smalldd 發表在 痞客邦 留言(0) 人氣(1,958)

  • 個人分類:C++
▲top
  • 3月 20 週四 200820:58
  • C++ 兩個類別要互相引用怎麼辦呢?

類別要互相使用彼此偶爾會遇到
但是兩個類別標頭檔案(.h)中互相引用(include)彼此的標頭檔案
在 Visual C++ 2005 中會造成 compiler 不認識彼此類別
這可真是一件頭痛的事,該怎麼辦呢?
有一個方法可以解決,就是在標頭檔案中
(繼續閱讀...)
文章標籤

smalldd 發表在 痞客邦 留言(0) 人氣(4,072)

  • 個人分類:C++
▲top
  • 11月 18 週日 200714:53
  • C++ 動態配置二維陣列

動態配置二維陣列不外乎都是利用下面這種方式
int i;
int data_height, data_width;
int **data;
p = new int*[data_height];
for(i = 0; i < data_height; i++)
    data[i] = new int[data_width];
可惜這種方式在釋放記憶體空間的時候就必須
for(i = 0; i < data_height; i++)
    delete [] data[i];
delete [] data;
不是很方便,且不能使用
memset(data[0], 0, sizeof(int)*data_height*data_width);
初始值為 0
以及用 memcpy() 複製值至另一個陣列
因此參考了程式設計俱樂部 記憶體配置問題 此篇文章
改寫原本用 malloc 動態配置二維陣列的方式
使用 new 的方式建立二維陣列
void* new2d(int h, int w, int size)
{
    register int i;
    void **p;
    p = (void**)new char[h*sizeof(void*) + h*w*size];
    for(i = 0; i < h; i++)
    {
        p[i] = ((char *)(p + h)) + i*w*size;
    }
    return p;
}
因此就可以用這 function
動態建立二維陣列
data = (int **)new2d(data_height, data_width, sizeof(int));
為了增加閱讀方便,以及撰寫程式的方便
在程式前頭增加
#define NEW2D(H, W, TYPE) (TYPE **)new2d(H, W, sizeof(TYPE))
更新記錄:
2011/01/22 01:07
便可簡化剛剛動態配置二維陣列寫法
data = NEW2D(data_height, data_width, int);
此外此種動態配置記憶體的方法在釋放記憶體也比之前寫法方便多
delete [] data;
就可以釋放記憶體
(繼續閱讀...)
文章標籤

smalldd 發表在 痞客邦 留言(2) 人氣(24,102)

  • 個人分類:C++
▲top
1

近期文章

  • ubuntu 10.10 改變ibus倉頡五代預設語系 (簡->繁)
  • ubuntu 10.10 在intel 965內建顯示晶片上開啟vmware player的3D acceleration (3D圖形加速)功能
  • ubuntu 10.10 JDownloader 免空下載器
  • strerror() 取得錯誤代碼之錯誤訊息
  • ubuntu 10.04 閱讀 linux man page 檔案 (說明檔檔案)
  • 胎壓 單位
  • 冷氣的 噸 / kW / kcal / BTU
  • 建立 proc 的 ioctl
  • ubuntu 9.04 讓 root 登入 GNOME 桌面
  • 將自己寫的程式加入 kernel 編譯中 ── 編寫 Kconfig

個人頭像

smalldd
暱稱:
smalldd
分類:
不設分類
好友:
累積中
地區:

文章彙整

文章分類

toggle 程式 (2)
  • Linux programming (4)
  • C++ (3)
toggle 生活 (2)
  • 日常生活 (3)
  • 電腦生活 (3)
toggle 電腦 (4)
  • Arch Linux (19)
  • 未分類 (1)
  • ubuntu (51)
  • Kubuntu (12)
  • 英文 (2)
  • Windows (1)
  • 未分類文章 (1)

參觀人氣

  • 本日人氣:
  • 累積人氣: