Time of Update: 2018-12-03
下面兩行代碼是數組越界訪問,將可能導致程式崩潰。int narray[x];narray[y] = 10;這裡x和y都是常數。例如int narray[5];narray[8] = 10;現象總結如下:當y==x或y==-1時,debug調試運行會報錯:Run-Time Check Failure #2 - Stack around the variable 'narray' was corrupted.但是y>x或y
Time of Update: 2018-12-03
1:選擇更新源 Ubuntu預設的更新源可能很慢,在系統-系統管理-軟體源-下載至下拉式清單中選擇其他,然後點擊 選擇最佳伺服器按鈕測速,完成後使用測出來的更新源 2:漢化 Ubuntu8.10在安裝的時候會選擇語言,雖然選擇了中文,但是裝完系統後會看到一半中文一半英語的情況。在系統-系統管理-語言支援中選擇漢語,應用後會更新語言套件。再reboot系統。這個步驟完成後自動安裝了scim的中文IME 3:安裝emacs23
Time of Update: 2018-12-03
一篇國外博文《Finding the Best Programmer's Font》中,作者指出一個理想的編碼字型應具備以下要素:Crisp clear characters. Extended characterset. Good use of whitespace. 'l', '1' and 'i' are easily distinguished '0', 'o' and 'O' are easily distinguished forward quotes from back
Time of Update: 2018-12-03
用了一段時間Gamebryo了——做了2個月的demo,由於一些不可抗拒的因素,demo被迫喊停,我和另外一個同事被調到了項目組,做了2個月的東西完全被否決掉,心頭總是有些失落的。最近在反思的同時也想把使用Gamebryo的感受記錄下來。 首先說明,在3D方面我就是一打醬油的,也就知道那麼點基礎概念,所以這篇文章的內容和所表達的觀點可能會有一些偏差。 首先,Gamebryo是一個成熟的3D商業引擎,已經有不少的遊戲公司在採用它作為引擎開發3D項目,具體的項目可以到GB
Time of Update: 2018-12-03
繼上集故事《多字元集(ANSI)和UNICODE及字串處理方式準則 》,我們現在有一些特殊需求:有時候我們的字串是多字元型,我們卻需要使用寬字元型;有的時候卻恰恰相反。Windows為我們提供了這樣的函數來處理這個問題:1.MultiByteToWideChar函數功能:該函數映射一個字串到一個寬字元 (unicode)的字串。由該函數映射的字串沒必要是多位元組字元組。函數原型:int MultiByteToWideChar(UINT CodePage, DWORD dwFlags,
Time of Update: 2018-12-03
最近在抽零碎的時間做特效編輯器的UI部分,和同事討論了一下,採用WPF開發UI部分,其理由比較簡單,該編輯器是為GameBryo服務的,而GB本身大多數編輯器的UI架構都採用C#開發,ToolBench部分採用WPF(WinForm中嵌入WPF),而C#本身比較適合做這類工具開發,.net又具備豐富的控制項,WPF又號稱microsoft的下一代介面技術,so,決定嘗試用WPF做編輯器UI。 很久沒做介面方面的工作了,我對介面開發的認識還停留在MFC時代,開啟MSDN看了下WPF的介紹,突然很感
Time of Update: 2018-12-03
說起多線程,我們可以說起一大堆和它相關的有趣話題來,比如什麼子孫線程關係,父子線程關係,線程同步非同步之類的研究話題來,而我今天所說的,是關於父子線程的一些有趣現象。 首先提出一個問題,“在多線程的應用程式中,當父線程結束之後,子線程會不會退出呢?”,本文將圍繞這個問題,深入分析windows中父子線程的生命週期及他們之間的關係。 我們知道,不管你使用的是何種程式設計語言,但當我們在windows下編程,且使用了平台相關性的庫的時候,不管我們使用什麼函數來建立線程,最終的結果是,我們的代碼中都會
Time of Update: 2018-12-03
一般情況下,我們需要查看一個DLL或EXE中的包含的函數或是依賴的函數之類的資訊,可以使用VS內建的工具dumpbin; 可以直接在命令列下輸入dumpbin就可以查看他的使用說明,如果未顯示,可以先運行VS安裝目錄下的vcvarsall.bat來設定一下環境變數就可以了 Microsoft Windows XP [版本 5.1.2600](C) 著作權 1985-2001 Microsoft Corp.C:/Documents and Settings/Administrator&
Time of Update: 2018-12-03
我是9月初收到面試通知的,那天下午下班之後,我接到一個人說是華為的,想瞭解一下我是否願意去華為工作,本來開始還沒打算去華為,一是因為自己才一年的工作經驗,二是傳聞華為累死人不償命~~~- -!所以我說暫時還沒想過,然後他給我說,電話說不方便,周末啥時候有時間吃頓飯聊聊。我想了想周末反正沒事,出去見識一下大公司也好,就約定周末星巴克見面。
Time of Update: 2018-12-03
對於C++運行庫,Microsoft的C++運行庫為我們提供了2個API函數: uintptr_t _beginthread( void( *start_address )( void * ), unsigned stack_size, void *arglist ); uintptr_t _beginthreadex( void *security, unsigned stack_
Time of Update: 2018-12-03
這裡討論的是ADO調用預存程序,按MSDN的例子,一般都是下面的調用方法(節選自MSDN):HRESULT hr = S_OK; // Define ADO object pointers. // Initialize pointers on define. // These are in the ADODB:: namespace. _RecordsetPtr pRstByRoyalty = NULL; _RecordsetPtr pRstAuthors =
Time of Update: 2018-12-03
"Automation 伺服器不能建立對象" 的解決方案 如果出現"Automation 伺服器不能建立對象"的錯誤提示框,表明對象需要scrrun.dll的支援,可以嘗試下面的方法:開始--運行--regsvr32 scrrun.dll不用重新安裝作業系統和vs.net 有些指令碼需要微軟的 MSXML 控制項才能進入。當使用 IE 5 以上版本的預設安全模式時,會提示是否接受 MSXML 控制項,如果接受,MSXML
Time of Update: 2018-12-03
這是我自己寫的介面庫,編程一直用他,包含了介面庫和圖象庫。這個庫並不是有意為之,而是我多年編程過程中積累下來的。最初只是把一些經常要用到的功能封裝成一些函數,建了一個靜態庫,方便自己編程,後來慢慢積累,函數越來越多,於是封裝成類,再後來簡單的封裝也不行了,於是花了一段時間進行整理設計,基本上是重寫了這個類庫,於是就有了這個介面和圖象庫,是對過去自己編程寫的代碼的一個總結與整理,方便自己的編程,現在共用出來,與大家一起交流學習吧。這個庫是完全從WIN
Time of Update: 2018-12-03
終於把RingSDK協助文檔寫完了。寫協助文檔真是個苦差事,尤其是靜態庫的說明文檔,那麼多的函數說明。Doxygen產生的文檔沒辦法符合我的要求,於是寫了個指令碼對其進行函數的文檔分離,載入到我的協助檔案製作工具裡面,然後開始填空。發現中文拼音裡面出現頻率最高的可能就是“a”和“z”了,再加上要按Caps
Time of Update: 2018-12-03
網路遊戲在封測,內測,直至公測期間,宕機回檔幾乎是家常便飯,遊戲開發商焦急的在玩家的抱怨聲和流失的過程中做著亡羊補牢的事情。我有過這種經曆,公測時的火爆和幾個月後的冷清形成了鮮明的對比。這對公司的損失是相當大的,前期投入的巨額廣告帶來的效益也付之東流,再在後期遊戲穩定後依靠運營手段把玩家拉回來變得相當困難並且成本不菲,基於這種事實,很多人會把責任推向程式員——沒能提供穩定的發布版本。
Time of Update: 2018-12-03
例1:DLL編寫:Dll1.h#ifndef DLL1#define DLL1_declspec(dllexport) int Add(int x,int y); //Add#endif Dll1.cpp#include "Dll1.h"int Add(int x,int y){return x + y;} Dumpbin:1 0 00011078 ?Add@@YAHHH@Z = @ILT+115(?Add@@YAHHH@Z) DLL調用1:(包含Lib檔案)(也可以在代碼中使用#pragma
Time of Update: 2018-12-03
RingSDK介面庫現已改為LGPL協議,不再有使用限制了。同時修正了一些BUG,增加了一些功能,大家可以到svn://svnhost.cn/RingSDK用SVN更新,檔案打包太麻煩,因此不再提供檔案下載方式更新。 這次更新主要是改了著作權協議,還有修改並使用了ANSI和UNICODE的相容函數,可以通過VC2008的編譯,不過沒提供VC2008的工程檔案,使用VC2008的朋友可以直接點DSW檔案進行轉換。 完成了OUTLOOK風格的導覽列,並寫了個DEMO,支援標準OUTLOOK和OUTL
Time of Update: 2018-12-03
boost::bind庫絕對是最有用,最有價值的庫之一,已被納入tr1。bind庫的出現,替代了stl中的mem_fun,ptr_fun,bind1st,bin2nd等函數本文並不介紹bind的使用,而是從bind的原始碼(boost1.38.0)中分析出它的實現原理bind執行大致可分為2個過程 1:建構函式對象 2:調用函數對象下面我們以以下代碼為列,抽絲剝繭,分析bind的內部機制。#include <iostream>#include
Time of Update: 2018-12-03
如題。當dump定位到這個地方時,有理由懷疑是下標訪問string時越界了。我們先看Checked Iterators中的例子。// compile with: /EHsc#define _SECURE_SCL 1#define _SECURE_SCL_THROWS 1#include <vector>#include <iostream>using namespace std;int main() { vector v; v.push_back(67);
Time of Update: 2018-12-03
有不少朋友反映《循序漸進實現仿QQ介面》裡面的樣本程式無法編譯或編譯有問題,以及希望能有MFC的工程,在此集中解答一下。 示範程式編譯問題: 1、示範程式需要最新版本的RingSDK,請先用SVN到svn://svnhost.cn/RingSDK更新到最新版本,推薦用TortoiseSVN。TortoiseSVN的:http://tortoisesvn.net/downloads,安裝後在資源管理員建立RingSDK目錄,比如c:/ringsdk,在該檔案夾上按滑鼠右鍵,選擇“SVN