在網路上發現很多人遇到語言列平白無故就消失的案例,
大部分人所提供的解決辦法是進入控制台 → 變更顯示語言 → 變更鍵盤 中的語言列標籤,
將語言列從隱藏勾選成固定在工作列;但是這個辦法並沒有解決我的問題。
2009年4月29日 星期三
error LNK2019的解決一例
在編譯W32的DLL的程式時,意外的出現error LNK2019: 無法解析的外部符號 "public: int __thiscall WavFile::FreeWaveData(struct WaveDataArray *)這一類的錯誤訊息,百般檢查程式的確是沒有錯誤的地方啊~~後來去爬了一下,有人提到VC++對於template的編輯支援的問題,由此template的程式必須要編譯二次,VC++似乎沒有支援,於是我將原本來.CPP檔中的程式主體搬到.H檔案中,放至宣告後面,這個問題就解決了。
2009年4月24日 星期五
[C++ ][原創]使用new動態配置二維陣列
在以往C++語言的環境下,一般想要動態的配置一個二維的陣列,必須先配置出一個一維陣列的指標,再將每一小塊的陣列配給那個指標。
int** a = new int*[b];
for (int i=0;i++)
a[i] = new int[10];
for (int i=0;i++)
delete[] a[i];
delete[] a;
但是這樣的配置記憶體是不連續的,而且要刪除時也很麻煩,必須先把每一欄的記憶體刪除,在去刪除指標陣列,現在有個方法可以直接使用new來完成一次配置,當然,也可以一次把記憶體刪除,且記憶體是連續的方便管理。
int (*a)[10] = new int[b][10];
delete[] a;
根據C與C++的規範,宣告成空陣列時,Column一定要有值,也就是說必須讓編輯器知道要多大的記憶體塊,好讓你可以runtime的去配置記憶體,所以就可以宣告成指向固定記憶體塊{(*int)[10]}的指標,再用new去配置那塊記憶體即可,a這個值就會是一個二維陣列的位置,且可以動態的被配置出來,且刪除時也較方便。
int** a = new int*[b];
for (int i=0;i++)
a[i] = new int[10];
for (int i=0;i++)
delete[] a[i];
delete[] a;
但是這樣的配置記憶體是不連續的,而且要刪除時也很麻煩,必須先把每一欄的記憶體刪除,在去刪除指標陣列,現在有個方法可以直接使用new來完成一次配置,當然,也可以一次把記憶體刪除,且記憶體是連續的方便管理。
int (*a)[10] = new int[b][10];
delete[] a;
根據C與C++的規範,宣告成空陣列時,Column一定要有值,也就是說必須讓編輯器知道要多大的記憶體塊,好讓你可以runtime的去配置記憶體,所以就可以宣告成指向固定記憶體塊{(*int)[10]}的指標,再用new去配置那塊記憶體即可,a這個值就會是一個二維陣列的位置,且可以動態的被配置出來,且刪除時也較方便。
2008年12月25日 星期四
2008年12月22日 星期一
人越大就越複雜,其實複雜的是你的心.........
每個人的成長過程,從簡單的東西開始學習複雜的事,喝奶、吃粥、吃飯一路進步著,爬行、走路、跑步一直進步著,隨著會的東西越來越多,心境也越來越複雜,憤怒、說謊、嫉妒、畏縮一直複雜變多,但是回歸到原點,其實你的需求一直都是沒變的,變得複雜的只有你的心,放下包袱的那一刻起,你會發現其實一點都不複雜,而且什麼事都可以解決。
訂閱:
文章 (Atom)