青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-15  評(píng)論-2  文章-0  trackbacks-0
  2010年9月26日
恩恩,這個(gè)小玩具(龍之谷加點(diǎn)模擬器)一個(gè)月前就開始做了,因?yàn)閷?duì)GTK不熟悉,所以中間拖了很久,現(xiàn)在基本功能已經(jīng)實(shí)現(xiàn),界面如下,有不少按鈕以及全部菜單都是假的,無所謂,基本的功能已經(jīng)OK了,下一步應(yīng)該會(huì)加上視頻演示吧。。恩,自我感覺良好。(今天真開心。。啦啦啦)

posted @ 2010-09-26 01:44 RayRiver 閱讀(335) | 評(píng)論 (0)編輯 收藏
  2010年5月18日
今天在把linux下做的ipmsg移植到windows過程中,因?yàn)榘艘粋€(gè)開源庫(kù)SimpleSocket,而這個(gè)庫(kù)又引用了winsock2,沒太注意就寫下了下面的makefile:

g++ -o tt tt.o -lws2_32 -lclsocketd

結(jié)果報(bào)出了N多丑陋的undefined reference..之后嘗試將-lws2_32和-lclsocketd交換位置后,編譯通過。

上網(wǎng)查了下,發(fā)現(xiàn)gcc編譯時(shí)依賴庫(kù)的順序是很重要的。比如說,liba.a依賴于libb.a,則必須寫成-la -lb,似乎感覺這種順序很奇怪。另外參考網(wǎng)上http://www.shnenglu.com/findingworld/archive/2008/11/09/66408.html的內(nèi)容,在庫(kù)比較多依賴關(guān)系比較復(fù)雜或者相互依賴或者自己不清楚的情況下,可以采取下面2種辦法:

1、-la -lb -la,丑陋,但是有效。
2、gcc有這樣的選項(xiàng),-Xlinker,寫成如下格式可以強(qiáng)制gcc重復(fù)查找依賴庫(kù):

g++ -o tt tt.o -Xlinker "-(" -lws2_32 -lclsocketd "-)"

這樣在括號(hào)中的庫(kù)的依賴關(guān)系就不需要你操心啦,雖然會(huì)延長(zhǎng)鏈接時(shí)間。不過本人在實(shí)際使用過程中,g++認(rèn)不出"-)",不加也可以鏈接成功。
posted @ 2010-05-18 02:01 RayRiver 閱讀(7542) | 評(píng)論 (1)編輯 收藏
  2010年5月15日
為了方便調(diào)試,需要在VS中為GUI程序添加console窗口。

項(xiàng)目 -> 屬性 -> 配置屬性 -> 生成事件 -> 生成后事件 -> 命令行:

editbin /SUBSYSTEM:CONSOLE $(OUTDIR)\ipmsg.exe

ipmsg.exe改為可執(zhí)行代碼的文件名。
posted @ 2010-05-15 22:31 RayRiver 閱讀(718) | 評(píng)論 (0)編輯 收藏
  2010年4月28日
SDL里將所有stdout和stderr重定向到了stdout.txt和stderr.txt文件中,在學(xué)習(xí)SDL的過程中,每次要打開一個(gè)文本文件看日志很麻煩。之前也遇到這個(gè)問題,沒有解決,這次特意上網(wǎng)找了下,終于得以解決。

參考解決方案地址:http://www.gamedev.net/community/forums/topic.asp?topic_id=371770

下面說下解決辦法。
SDL源碼src\main\win32目錄下有個(gè)SDL_win32_main.c這個(gè)文件,里面處理了輸出流的重定向。有這么幾句:
#ifndef NO_STDIO_REDIRECT
    
else {
        redirect_output();
    }

#endif

可以看到NO_STDIO_REDIRECT這么一個(gè)條件,因?yàn)檫@是在編譯過程中選擇的,而SDL代碼里并沒有關(guān)于NO_STDIO_REDIRECT的定義,如果直接通過lib鏈接的話,肯定是會(huì)redirect的。所以我們的做法就是在compile時(shí)加入define選項(xiàng)重新編譯這段源碼,以后如果想要重定向時(shí),去掉define選項(xiàng)即可。參考上面網(wǎng)站的做法(有所不同,他的辦法我沒有成功):
1、將SDL_win32_main.c加入項(xiàng)目中;
2、去掉鏈接庫(kù)選項(xiàng)-lSDLmain;
3、在編譯SDL_win32_main.o的時(shí)候加入-DNO_STDIO_REDIRECT選項(xiàng)(或者在SDL_win32_main.c中加入#define NO_STDIO_REDIRECT一句)。

這樣就一切OK了,看吧。
posted @ 2010-04-28 22:28 RayRiver 閱讀(980) | 評(píng)論 (0)編輯 收藏
  2010年4月11日

GVIM用的是UTF-8,cmd為GB2312,中文輸出的時(shí)候就會(huì)亂碼;

將GVIM中的中文轉(zhuǎn)成GB2312時(shí)輸出正常;

SQLITE open時(shí)用的是UTF-8,insert時(shí)因?yàn)橹苯尤〉奈募械膬?nèi)容,輸出cmd正常,所以是用的GB2312;
這時(shí)候在select中文的時(shí)候在GVIM輸入中文字,即使用UTF-8,則無法找到GB2312的數(shù)據(jù);

在insert時(shí)將數(shù)據(jù)全部轉(zhuǎn)成UTF-8后,直接select UTF-8就能夠找到,但輸出cmd為亂碼;

這樣就全部解釋清楚了。
現(xiàn)在要做的就是在insert時(shí)轉(zhuǎn)為UTF-8,至于cmd那垃圾輸出就算了,我可沒興趣為了輸出個(gè)東西看還要轉(zhuǎn)成GB2312,再次噴下微軟。。

posted @ 2010-04-11 01:37 RayRiver 閱讀(343) | 評(píng)論 (0)編輯 收藏
  2010年3月31日
     摘要: 摘要:動(dòng)態(tài)鏈接庫(kù)技術(shù)實(shí)現(xiàn)和設(shè)計(jì)程序常用的技術(shù),在Windows和Linux系統(tǒng)中都有動(dòng)態(tài)庫(kù)的概念,采用動(dòng)態(tài)庫(kù)可以有效的減少程序大小,節(jié)省空間,提高效率,增加程序的可擴(kuò)展性,便于模塊化管理。

但不同操作系統(tǒng)的動(dòng)態(tài)庫(kù)由于格式 不同,在需要不同操作系統(tǒng)調(diào)用時(shí)需要進(jìn)行動(dòng)態(tài)庫(kù)程序移植。本文分析和比較了兩種操作系統(tǒng)動(dòng)態(tài)庫(kù)技術(shù),并給出了將Visual C++編制的動(dòng)態(tài)庫(kù)移植到Linux上的方法和經(jīng)驗(yàn)。

1、引言

動(dòng)態(tài)庫(kù)(Dynamic Link Library abbr,DLL)技術(shù)是程序設(shè)計(jì)中經(jīng)常采用的技術(shù)。其目的減少程序的大小,節(jié)省空間,提高效率,具有很高的靈活性。

采用動(dòng)態(tài)庫(kù)技術(shù)對(duì)于升級(jí)軟件版本更加容易。與靜態(tài)庫(kù)(Static Link Library)不同,動(dòng)態(tài)庫(kù)里面的函數(shù)不是執(zhí)行程序本身的一部分,而是根據(jù)執(zhí)行需要按需載入,其執(zhí)行代碼可以同時(shí)在多個(gè)程序中共享。

在Windows和Linux操作系統(tǒng)中,都可采用這種方式進(jìn)行軟件設(shè)計(jì),但他們的調(diào)用方式以及程序編制方式不盡相同。本文首先分析了在這兩種  閱讀全文
posted @ 2010-03-31 20:28 RayRiver 閱讀(476) | 評(píng)論 (0)編輯 收藏
  2010年3月29日
環(huán)境的搭建不說了,網(wǎng)上很多。我本人是用GCC,沒有用VC完全是因?yàn)椴皇煜の④浀臇|西,以及不想太過依賴微軟(就算依賴至少也得知道到底依賴了他哪些東西)。

其中看到的OpenGL的函數(shù),
以gl開頭的函數(shù)都是OpenGL的標(biāo)準(zhǔn)函數(shù);
以glu開頭的函數(shù)都是GLU實(shí)用庫(kù)所提供的函數(shù);
以glut開頭的函數(shù)都是GLUT工具包所提供的函數(shù);
函數(shù)庫(kù)的內(nèi)容詳見OpenGL開發(fā)庫(kù)的詳細(xì)介紹。 

#include <gl/gl.h>
#include 
<gl/glu.h>
#include 
<gl/glut.h>

void 
myDisplay(
void)
{
    
// 清除, GL_COLOR_BUFFER_BIT表示清除顏色
    glClear(GL_COLOR_BUFFER_BIT);

    
// 畫一個(gè)矩形, 四個(gè)參數(shù)分別為左上角點(diǎn)的x, y坐標(biāo), 右下角點(diǎn)的x, y坐標(biāo)
    glRectf(-0.5f-0.5f0.5f0.5f);

    
// 保證前面的OpenGL命令立即執(zhí)行(而不是讓它們?cè)诰彌_區(qū)中等待), 其作用跟fflush(stdout)類似
    glFlush();
}


// 程序入口
int 
main(
int argc, char *argv[])
{
    
// 對(duì)GLUT進(jìn)行初始化
    glutInit(&argc, argv);

    
// 設(shè)置顯示方式
    
// GLUT_RGB表示使用RGB顏色, GLUT_INDEX表示使用索引顏色
    
// GLUT_SINGLE表示使用單緩沖, GLUT_DOUBLE表示使用雙緩沖
    glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE );

    
// 設(shè)置窗口在屏幕中的位置
    glutInitWindowPosition(100100);

    
// 設(shè)置窗口的大小
    glutInitWindowSize(400400);

    
// 根據(jù)前面設(shè)置的信息創(chuàng)建窗口, 參數(shù)將被作為窗口的標(biāo)題
    
// 此時(shí)并不馬上顯示到屏幕上, 等到調(diào)用glutMainLoop后才能看到窗口
    glutCreateWindow("My first OpenGL Program, not \"Hello World\", - -");

    
// 設(shè)置一個(gè)函數(shù), 需要進(jìn)行畫圖時(shí), 這個(gè)函數(shù)就會(huì)被調(diào)用
    glutDisplayFunc(&myDisplay);

    
// 進(jìn)行一個(gè)消息循環(huán)
    glutMainLoop();

    
return 0;
}


posted @ 2010-03-29 22:05 RayRiver 閱讀(407) | 評(píng)論 (0)編輯 收藏
  2010年3月24日
1、添加CMD在這里。
regedit -> \HKEY_CLASSES_ROOT\Folder\shell -> 新建CMD here項(xiàng) -> 新建Command項(xiàng) -> 鍵值cmd /K cd /d %L

2、添加右鍵以xx程序打開該文件。
regedit -> \HKEY_CLASSES_ROOT\*\shell -> 新建Edit with VimMate項(xiàng) -> 新建Command項(xiàng) -> 鍵值"D:\Program Files\VimMate\vim72\gvim.exe" -p --remote-tab-silent "%1"。其中Edit with VimMate為右鍵菜單顯示的文字,鍵值為執(zhí)行的程序,至于-p --remote-tab-silent參數(shù),則是GVIM默認(rèn)以標(biāo)簽形式打開(不重開新GVIM窗口)。
posted @ 2010-03-24 23:03 RayRiver 閱讀(489) | 評(píng)論 (0)編輯 收藏

加了一些技術(shù)群,經(jīng)常會(huì)看到一些奇怪的現(xiàn)象。一個(gè)新手在群里提了個(gè)問題,結(jié)果半天沒人回答,倒是會(huì)跳出四五個(gè)衛(wèi)道士模樣的人,指手畫腳,指責(zé)新手編碼風(fēng)格不好,習(xí)慣不好,種種。看上去句句在理,實(shí)際上全部放屁。本來編碼風(fēng)格之類的東西就是溫飽以后考慮的問題,現(xiàn)在人家連飯還沒吃飽,你要他考慮這種奢侈品,那你要么是吃飽了撐的,要么就是純粹去饞人家。不管回答者水平如何,避而不談問題本身,去扯那些暫時(shí)對(duì)新人沒有用的東西,那就是方向性的誤導(dǎo)。最終的結(jié)果,新人完全搞不明白你在說什么,本來簡(jiǎn)單的問題,弄了半天沒搞懂。這是一種嚴(yán)重的不負(fù)責(zé)任,作為技術(shù)上的前輩,你可以不回答,但你絕對(duì)不要去誤導(dǎo)。

回正題(-。-)。原來從公司拷來的redhat已經(jīng)被我搞的很亂了,于是萌發(fā)了將平臺(tái)移植到新的虛擬機(jī)里,因?yàn)閷?duì)ubuntu相對(duì)比較熟悉,所以今天重裝了ubuntu的虛擬機(jī)。重裝途中,困難重重,結(jié)果到半夜才勉強(qiáng)搞定。記錄一下遇到的問題,以及解決的辦法,還有一些東西已備以后查看。

1、取消ubuntu默認(rèn)的點(diǎn)陣字體

cd /etc/fonts/conf.d
sudo ln 
-sf ../conf.avail/66-wqy-zenhei-sharp-no13px.conf 66-wqy-zenhei-sharp.conf


2、ubuntu初始安裝是沒有ftp/telnet的

sudo apt-get install vsftpd xinetd telnetd

其中需要設(shè)置:/etc/vsftpd.conf文件中將以下一行注釋去掉:local_enable=YES,目的是可以使用linux用戶登錄ftp(否則只能匿名登錄)。
另外還有個(gè)問題,在FTP的put時(shí),似乎由于權(quán)限問題會(huì)put失敗,嘗試root登錄也失敗,暫時(shí)沒有找到原因,以后研究了補(bǔ)上

3、su - root
ubuntu第一次安裝好后默認(rèn)無法登錄root,這時(shí)候可以通過下面命令修改root口令,就可以su - root了。

sudo passwd root


4、新增字體
將字體文件拷入/home/.fonts目錄下,執(zhí)行下列命令刷新字體緩存。然后就可以使用新加的字體了。

fc-cache -fv

sudo不sudo無所謂。另外建議將字體的權(quán)限改成755,以便其他用戶read。


5、最后一個(gè),也是本文的標(biāo)題,同樣也是困擾我一晚上的問題。在SecureCRT登錄的時(shí)候發(fā)現(xiàn)中文有亂碼的問題,嘗試了網(wǎng)上的一些辦法,把編碼改UTF-8 GBK都是有問題,最后發(fā)現(xiàn)了原來字體的字符集也是有關(guān)系的,現(xiàn)在把我改的東西整理如下。

(1)/var/lib/locales/supported.d/local文件中添加一行:zh_CN.UTF-8 UTF-8,執(zhí)行sudo locale-gen下載文件
(2)在/etc/environment中增加兩行分別為:LANG="zh_CN.UTF-8"和LC_ALL="zh_CN.UTF-8"
(3)~/.profile中增加兩行分別為:export LANG="zh_CN.UTF-8"和export LC_ALL="zh_CN.UTF-8",執(zhí)行.profile
(4)SecureCRT中選擇終端類型為L(zhǎng)inux,選擇編碼為UTF-8,最重要的是選擇一個(gè)支持GB2312字符集的字體。因?yàn)槲页S玫腗onaco字體不支持,于是我不得不忍痛放棄,在網(wǎng)上找到一個(gè)“YaHei Mono”是可以正常顯示的,雖然看上去不如Monaco,不過用著慢慢也習(xí)慣了吧(記得大學(xué)里做畢業(yè)設(shè)計(jì)的時(shí)候用netbeans里一個(gè)Yahei console字體和這個(gè)很相似),具體詳見這里

到此SecureCRT終于可以正常顯示漢字了,因?yàn)楹芾Я怂灾皇橇_列了一下修改內(nèi)容,沒有寫太多的理由。在此我不禁要噴一噴微軟,你說你好好的UTF-8不用,都WIN7了還用這么個(gè)GB2312,你不是害人嗎。

睡了,有修改內(nèi)容以后補(bǔ)充。




 

posted @ 2010-03-24 01:31 RayRiver 閱讀(1133) | 評(píng)論 (0)編輯 收藏
  2010年3月18日
今天看到同事寫的代碼:
char retcode[5];
memset( 
&retcode, 0x00sizeof(retcode) );

因?yàn)橐郧皼]見過這樣的寫法,心想retcode本身就是指向字符數(shù)組的指針,再加個(gè)&不是變成指向指向字符數(shù)組指針的指針了嗎?結(jié)果他告訴我,這樣寫是可以的,而且可以防止retcode改變類型造成的coredump的情況。

帶著懷疑的想法去查了下《C與指針》,還真發(fā)現(xiàn)了這種用法。根據(jù)書中描述我才知道,這個(gè)retcode一般情況下表示的是指向char的常量指針,只有兩種情況,數(shù)組名所表示的不是指針常量:
   1、當(dāng)數(shù)組名作為sizeof操作符的操作數(shù)時(shí)。這時(shí)sizeof返回的是整個(gè)數(shù)組的長(zhǎng)度,而不是指向數(shù)組的指針的長(zhǎng)度;
   2、當(dāng)數(shù)組名作為單目操作符&的操作數(shù)時(shí)。取一個(gè)數(shù)組名的地址產(chǎn)生的是一個(gè)指向數(shù)組的指針(和使用數(shù)組名效果相同),而不是指向某個(gè)指針常量值的指針。

這么一句memset把兩種情況都用上了。

------------------------------------------------------------------------------
2010.04.26

今天遇到一個(gè)問題,在調(diào)zlib的compress的函數(shù)的時(shí)候總是報(bào)Z_STREAM_ERROR,半天都沒找到原因,最后發(fā)現(xiàn),我寫了下面的代碼:
Byte* alObuf;
alObuf = (Byte*)calloc(_MAX_ZMG_BUFFER, sizeof(Byte));

memset(&alObuf, 0x00sizeof(alObuf));
因?yàn)樽詮闹郎厦娴臄?shù)組memset的寫法以后,就一直習(xí)慣在前面加個(gè)&。然而,這一次,栽了。。
仔細(xì)看,這只是個(gè)unsigned char指針,加上了&就完全不知道指哪兒去了。。。

所以,這個(gè)寫法,只能用在數(shù)組前,千萬(wàn)別用在指針前。。。另外,這里的sizeof(alObuf)也只是4而已,指針的sizeof。。。數(shù)組和指針,別搞混了。
posted @ 2010-03-18 19:35 RayRiver 閱讀(487) | 評(píng)論 (0)編輯 收藏
  2010年3月14日

需要用到對(duì)informix的兩個(gè)庫(kù)的操作,一個(gè)是本地庫(kù)一個(gè)是遠(yuǎn)程庫(kù),因?yàn)橐薪徊娌僮鳎匀绻煌5拈_關(guān)會(huì)影響效率。

EXEC SQL connect to "db1@online7" as 'db1';
EXEC SQL connect to 
"db2@online9" as 'db2';


用時(shí)指定當(dāng)前的連接:

EXEC SQL set connection 'db1';
posted @ 2010-03-14 18:45 RayRiver 閱讀(333) | 評(píng)論 (0)編輯 收藏
  2010年2月25日
需要寫一個(gè)卸數(shù)的工具,有一個(gè)SELECT MAX的操作:

1EXEC SQL SELECT MAX(index) INTO :index
2         FROM table
3         WHERE x=:x AND y=:y;

目的是取出滿足WHERE條件的index的最大值。但是得出的結(jié)果卻是-21474836478,十六進(jìn)制為0x00000080,非常奇怪。嘗試了很多次還是這種結(jié)果,后來在網(wǎng)上找到了一篇文章(http://www.tek-tips.com/viewthread.cfm?qid=1501792&page=3),大致意思是當(dāng)滿足WHERE條件的條數(shù)為0時(shí),這條語(yǔ)句會(huì)有問題。仔細(xì)檢查才發(fā)現(xiàn)我其中的y值取錯(cuò)了,造成符合條件的記錄數(shù)為0,造成以上的問題,至于index為什么會(huì)有那個(gè)值原因未知。

結(jié)論是:在使用SELECT MAX之前,需要首先確定滿足WHERE條件的COUNT(*)>0,否則會(huì)造成未知錯(cuò)誤。

PS:至于剛才網(wǎng)址中作者所說的空表時(shí)會(huì)報(bào)-201錯(cuò)我沒有碰到,我在空表時(shí)和沒找到記錄時(shí)現(xiàn)象相同。
posted @ 2010-02-25 23:00 RayRiver 閱讀(800) | 評(píng)論 (0)編輯 收藏
  2010年2月11日

研究了一下浮點(diǎn)型在內(nèi)存中的表示方法,終于明白fortify果然不是吃素的,原來double型數(shù)字真的有可能超過200位的。。

一、浮點(diǎn)型在內(nèi)存中的表示
單精度f(wàn)loat型:  1位符號(hào)位,  8位階碼(固定偏移  7F), 尾數(shù)23, 固定隱含位有
雙精度double型: 1位符號(hào)位, 11位階碼(固定偏移 3FF), 尾數(shù)52, 固定隱含位有
long double型: 1位符號(hào)位, 15位階碼(固定偏移3FFF), 尾數(shù)64, 固定隱含位無
某些編譯器中把long double作double處理

其中,
符號(hào)位s:0表示正,1表示負(fù);
階碼e:表示指數(shù),需要減去固定偏移de;
尾數(shù)x:表示純小數(shù)位,固定隱含位z是指整數(shù)位的1或者0。
表示成十進(jìn)制就是(-1)^s * 2^(e-de) * (z+x)
對(duì)于32位系統(tǒng),float占32位,double占64位

舉例來說,在BIG ENDIAN中二進(jìn)制表示為01000001 00100000 00000000 00000000的浮點(diǎn)數(shù),根據(jù)上面的規(guī)則,可以寫成:
0,10000010,0100000   000000000   0000000
符號(hào)位s=0,階碼e=10000010b=130,固定偏移de=0x7F=127,尾數(shù)x=0.01000000000000000000000b=0.25,固定隱含位有,z=1
根據(jù)公式可以算出這個(gè)數(shù)的十進(jìn)制表示為:(-1)^0 * 2^(130-127) * (1+0.25) = 10.0

二、一些特殊的浮點(diǎn)數(shù)
0,00000000,0000000   00000000   00000000和1,00000000,0000000   00000000   00000000均表示0(階碼和尾數(shù)都是0)
*,11111111,*******   ********   ********   表示非法數(shù)字(階碼是255時(shí))
最大的float數(shù):0,11111110,1111111   11111111   11111111   用10進(jìn)制表示約為   +3.4e38   
最小的float數(shù):1,11111110,1111111   11111111   11111111   用10進(jìn)制表示約為   -3.4e38  
絕對(duì)值最小的float數(shù):0,00000000,0000000   00000000   00000001和1,00000000,0000000   00000000   00000001  

三、浮點(diǎn)數(shù)的精度
單精度數(shù)的尾數(shù)用23位存儲(chǔ),加上默認(rèn)的小數(shù)點(diǎn)前的1位1,2^(23+1) = 16777216。因?yàn)?10^7 < 16777216 < 10^8,所以說單精度浮點(diǎn)數(shù)的有效位數(shù)是7位。
雙精度的尾數(shù)用52位存儲(chǔ),2^(52+1) = 9007199254740992,10^16 < 9007199254740992 < 10^17,所以雙精度的有效位數(shù)是16位。
如果你在浮點(diǎn)數(shù)的有效位后增加數(shù)字的話,結(jié)果是不會(huì)變化的。

四、浮點(diǎn)數(shù)的取值范圍
float取值范圍:
負(fù)數(shù)取值范圍為 -3.4028235E+38 到 -1.401298E-45,正數(shù)取值范圍為 1.401298E-45 到 3.4028235E+38。
double取值范圍:
負(fù)值取值范圍-1.79769313486231570E+308 到 -4.94065645841246544E-324,正值取值范圍為 4.94065645841246544E-324 到 1.79769313486231570E+308。
所以說,double型在sprintf的時(shí)候,要么想辦法回避Buffer Overflow的問題,要么就...給字符數(shù)組分配308以上的空間...

 

posted @ 2010-02-11 23:49 RayRiver 閱讀(1038) | 評(píng)論 (0)編輯 收藏
  2010年2月9日

今天在fortify代碼掃描的時(shí)候檢測(cè)出一個(gè)HOT,漏洞類型是Buffer Overflow,元兇是sprintf。

1sprintf(aTmp, "16.2f", TransAmt);

其中aTmp是20位字符數(shù)組,TransAmt為double型金額字段,值不確定。

理論上來說,是TransAmt按照格式16.2f寫進(jìn)aTmp的時(shí)候,有可能產(chǎn)生越界的錯(cuò)誤。我一開始考慮將aTmp長(zhǎng)度放長(zhǎng)后,double應(yīng)該可以順利拷進(jìn)aTmp,嘗試將aTmp的長(zhǎng)度分配到50,100,200,還是消除不掉這個(gè)HOT,因?yàn)椴幻靼资莇ouble所表示的浮點(diǎn)數(shù)的長(zhǎng)度有可能超過200位還是fortify認(rèn)死理,而銀行又強(qiáng)制規(guī)定代碼掃描不能有HOT(-。-),所以將sprintf替換成snprintf。

1snprintf(aTmp, sizeof(aTmp), "16.2f", TransAmt);

需要注意的一點(diǎn)是,第二個(gè)參數(shù)的值。網(wǎng)上有人提到寫成snprintf(buf, 10, "%10s", p)其實(shí)是不對(duì)的,因?yàn)檫@里的長(zhǎng)度,是包括結(jié)束符0x00的,也就是說,既然需要按照%10s格式化,那么這里的第二個(gè)參數(shù)必須寫成11而不是10。

相似的,strcpy等不帶長(zhǎng)度的字符串操作函數(shù),如果不注意寫法,往往會(huì)有Buffer Overflow的隱患。這時(shí)候,一般來說以strncpy等類似的帶長(zhǎng)度參數(shù)的函數(shù)替換就可以避免漏洞的產(chǎn)生。

另外,在網(wǎng)上查這個(gè)問題的時(shí)候,看到一個(gè)關(guān)于sprintf和snprintf的自拷貝的問題。

1sprintf(buf, "%s world\n", buf);

因?yàn)槲易约河袝r(shí)候也會(huì)有這種寫法,但也是不太確定會(huì)不會(huì)有問題。既然網(wǎng)上已經(jīng)有明確的研究了,那我就直接拿結(jié)論。

關(guān)于這兩個(gè)函數(shù)的自拷貝問題,在不同的編譯器上,結(jié)果不同。編譯器可以有不同的策略,有的簡(jiǎn)單的把原先的值抹去,有的會(huì)保留。因此,一般來說,我們應(yīng)該盡量避免這種寫法。

 

posted @ 2010-02-09 23:25 RayRiver 閱讀(2136) | 評(píng)論 (0)編輯 收藏
  2010年2月7日
今天準(zhǔn)備手動(dòng)make原來用CODE BLOCKS寫的代碼的時(shí)候報(bào)了這么個(gè)錯(cuò)誤:

1\MinGW\lib\libmingw32.a(main.o):main.c|| undefined reference to `WinMain@16' 

大概意思是WinMain未定義。WinMain是windows程序的入口函數(shù),一般來說沒有main函數(shù)或者main函數(shù)名拼寫錯(cuò)誤的話會(huì)在編譯的時(shí)候報(bào)這個(gè)錯(cuò)。我檢查以后,發(fā)現(xiàn)main應(yīng)該是正確的。

google一下后發(fā)現(xiàn)有不少人也遇到這個(gè)問題。仔細(xì)檢查了下Makefile,發(fā)現(xiàn)在連接庫(kù)的時(shí)候-lmingw32寫在了SDL庫(kù)的后面,將-lmingw32放在最前面后,問題解決。

posted @ 2010-02-07 15:34 RayRiver 閱讀(11310) | 評(píng)論 (1)編輯 收藏
僅列出標(biāo)題  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲最新视频在线| 亚洲国产视频一区| 午夜视黄欧洲亚洲| 久久人人九九| 亚洲国产专区| 欧美午夜精品一区| 亚洲一区二区三区久久 | 欧美一激情一区二区三区| 欧美专区在线播放| 一区二区三区在线高清| 男女av一区三区二区色多| 亚洲人精品午夜| 亚洲欧美国产日韩中文字幕| 国产欧美日韩一区二区三区| 久久激情中文| 亚洲精品色图| 久久久久久久久久久一区| 亚洲国内精品在线| 国产精品久久久久高潮| 久久精品国产综合精品| 亚洲精品视频免费| 久久精品国产免费看久久精品| 亚洲高清在线播放| 国产精品电影观看| 老司机午夜免费精品视频| 99精品视频免费观看视频| 开元免费观看欧美电视剧网站| 亚洲麻豆视频| 黄色成人av| 国产精品国产三级国产aⅴ无密码| 久久久国产亚洲精品| 一区二区免费在线视频| 免费观看在线综合色| 亚洲欧美成人一区二区三区| 一区福利视频| 国产精品午夜av在线| 欧美丰满高潮xxxx喷水动漫| 午夜精品免费| 日韩手机在线导航| 欧美成人蜜桃| 久久精视频免费在线久久完整在线看| 亚洲免费观看| 在线播放一区| 国产人成精品一区二区三| 欧美日本一区二区视频在线观看| 久久精品一区二区三区不卡| 亚洲一级片在线看| 亚洲精品一区二区三区婷婷月| 免费在线欧美视频| 久久久久免费观看| 久久高清一区| 欧美中文字幕精品| 亚洲欧美电影院| 亚洲一区中文| 亚洲一区二区黄色| 一区二区三区成人| 一区二区三区高清在线| 亚洲毛片一区二区| 亚洲美女黄色片| 亚洲精品视频一区二区三区| 亚洲激情在线播放| 亚洲人成绝费网站色www| 在线精品视频一区二区| 黄色成人精品网站| 国产一区二区精品久久| 国产精品区一区二区三区| 欧美国产日韩xxxxx| 久久久久久久综合日本| 亚洲欧美日韩直播| 99视频国产精品免费观看| 亚洲精品日韩欧美| 亚洲品质自拍| 亚洲激情在线播放| 亚洲国产成人av| 欧美国产日韩一区二区三区| 乱人伦精品视频在线观看| 久久精品国产精品| 久久se精品一区二区| 欧美一区二区免费| 亚洲综合好骚| 亚洲女优在线| 亚洲欧美日韩精品久久久| 亚洲欧美一区二区三区极速播放| 国产精品99久久久久久久vr | 国产欧美不卡| 国产欧美精品日韩精品| 国产美女精品一区二区三区| 国产精品女主播| 国产精品久久久久久久午夜片| 欧美日韩一区在线播放| 欧美色精品天天在线观看视频| 欧美三级午夜理伦三级中文幕| 欧美91视频| 欧美视频第二页| 国产精品成人午夜| 国产精品手机视频| 国产毛片久久| 在线播放国产一区中文字幕剧情欧美| 在线不卡中文字幕| 亚洲激情网址| 亚洲国产一区二区a毛片| 中文在线一区| 久久精品99国产精品日本| 久久免费少妇高潮久久精品99| 欧美+日本+国产+在线a∨观看| 能在线观看的日韩av| 亚洲欧洲另类国产综合| 亚洲视频一二三| 欧美专区日韩视频| 欧美成人免费va影院高清| 欧美激情一区二区久久久| 欧美午夜精品一区| 国产午夜精品视频| 91久久精品国产| 亚洲在线观看免费视频| 久久一区激情| 最新中文字幕亚洲| 午夜欧美不卡精品aaaaa| 久久久97精品| 欧美视频一区在线观看| 国产一级精品aaaaa看| 91久久精品一区二区别| 亚洲一区二区三区四区五区午夜 | 小黄鸭精品密入口导航| 久久一日本道色综合久久| 欧美激情一区二区三区在线视频观看 | 久久国产精彩视频| 欧美国产日韩在线观看| 国产精品国产福利国产秒拍| 亚洲精品1234| 午夜亚洲视频| 亚洲黄色免费电影| 亚洲欧美日韩国产中文| 欧美福利在线| 国产主播精品在线| 一本一本久久a久久精品综合妖精| 午夜精品久久久久久| 亚洲人成人77777线观看| 欧美一区二区三区在线视频| 欧美美女日韩| 国产主播喷水一区二区| 亚洲欧美国产精品va在线观看| 欧美大色视频| 性欧美1819sex性高清| 欧美日韩中文在线| 亚洲国产福利在线| 香蕉成人啪国产精品视频综合网| 欧美电影免费| 久久免费视频在线| 国产女主播一区| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久在线免费观看| 亚洲欧美国产毛片在线| 欧美日韩视频第一区| 亚洲人久久久| 欧美成人免费网站| 久久久国产精品一区| 国产欧美日韩专区发布| 亚洲尤物视频在线| 日韩视频免费观看高清在线视频| 玖玖玖国产精品| 伊人激情综合| 狼人天天伊人久久| 香港久久久电影| 国产精品一级在线| 久久精品亚洲一区| 亚洲欧美日本在线| 国产精品欧美在线| 香蕉免费一区二区三区在线观看| av成人毛片| 国产精品―色哟哟| 午夜精品久久一牛影视| 亚洲一区二区黄| 国产精品自在欧美一区| 欧美亚洲视频在线观看| 欧美一区二区三区精品| 国产视频欧美视频| 久久国产精品72免费观看| 亚洲图片你懂的| 国产精品一区视频网站| 欧美在线视频在线播放完整版免费观看| 午夜视频一区| 精品动漫一区| 亚洲国产精品999| 欧美精品激情在线| 99热精品在线| 亚洲七七久久综合桃花剧情介绍| 欧美三级资源在线| 欧美一区二区三区免费视| 亚洲免费在线观看| 国产一区清纯| 亚洲成色999久久网站| 欧美日韩精品一区视频| 亚洲欧美日韩精品久久亚洲区 | 在线播放视频一区| 欧美国产欧美亚洲国产日韩mv天天看完整| 久久久噜噜噜| 中文日韩欧美| 欧美在线亚洲在线| 国产欧美日韩麻豆91|