VS2005畢竟是大勢所趨,就支持64位這點, VC6.0就抗不住了,再加上界面漂亮,
再說,對一個程序員來說,電腦不好編毛的程序, 說耗資源就不應該是程序員說的,
好的東西肯定是要付出的,不管再怎么堅持VC6.0 , 你總會用.net的, 你為什么不堅持vc4.0 ,5.0呀
re: static變量和static函數 任我行 2006-12-11 14:57
有沒有考慮過,Static是如何實現的?
內存和其他有何區別?
re: 【天堂向左,深圳向右】 任我行 2006-09-04 09:26
慢慢看唄!
re: 忘記WORD文檔密碼解決辦法 任我行 2006-08-11 13:50
好.方便
re: KMP算法祥解 任我行 2006-08-11 13:48
非也
re: 堆棧,堆棧,堆和棧的區別 任我行 2006-07-28 13:22
棧:是一塊連續的內存的區域。這句話的意思是棧頂的地址和棧的最大容量是系統預先規定好的,在WINDOWS下,棧的大小是2M(也有的說是1M,總之是一個編譯時就確定的常數),如果申請的空間超過棧的剩余空間時,將提示overflow。因此,能從棧獲得的空間較小。
堆:堆是向高地址擴展的數據結構,是不連續的內存區域。這是由于系統是用鏈表來存儲的空閑內存地址的,自然是不連續的,而鏈表的遍歷方向是由低地址向高地址。堆的大小受限于計算機系統中有效的虛擬內存。由此可見,堆獲得的空間比較靈活,也比較大。
應用文章中的話,在編譯時,可以用/STACK命令來設置棧的大小,VC中默認時2M,不過也有一個限制,堆的最大空間和機器位數有關,32機上是4G吧。
re: 編譯后顯示和書上不一樣。。。。郁悶 任我行 2006-07-26 17:31
郁悶,為什么比較字串要這樣子呢,用strcmp吧
re: 三種動態調用方法 任我行 2006-07-26 10:07
VC不是C++? 也是C++的一個分支嘛?
真的是這樣嗎?真是在誤導別人!
并不只有C++才能寫DLL,
動態庫也并不只在Win中運行,別的系統也可以有,只是格式和名稱不一樣而已。
re: 超級難過 任我行 2006-07-24 15:05
何必呢,傷了自己的身子。
萬事想開點。
re: 編寫高效的C代碼 任我行 2006-07-21 20:14
好東西 ,這樣的文章越多越好。
估計是你在卸載的時候,選中使用ICC編譯器的選項被你勾中了,而你在卸載前沒有取消,所以,導致了卸載ICC后,VC不能用了。
我卸載ICC后,VC一切正常。
re: 編程感悟 任我行 2006-06-09 09:28
很好,希望以后能多多寫這樣的好文章。
先上傳到自己blog的相冊里,然后在blog文章中引用圖片就可以了。
user_string & user_string::operator = (const user_string &other)
{
if ( m_pdata == other ) //這里錯了。
return *this;
delete []m_pdata;
m_pdata = new char[strlen(other.m_pdata) + 1];
strcpy(m_pdata, other.m_pdata);
return * this;
}
re: 十萬火急! 任我行 2006-06-03 09:04
給個它一個連接吧
@<font color="#FF00FF" >Stone Jiang
好像確實是很少寫Blog
re: 理解復雜聲明 任我行 2006-05-31 08:46
這個不錯。
收藏了。
Firefox 有Linux版,至于Maxthon就不太清楚了。
暈倒。
你連dudu不認識?
可以干掉你的賬號。封你的家。
re: swap()引起的指針思考 任我行 2006-05-27 09:20
我把方法一按編譯后偽代碼重寫一下:
這個寫法,你可以參考一下《高質量C/C++》
int *p;
void swap(int *x,int *y)
{
int *_x = x;//原來函數內的x都被替換為_x
int *_y = y;
cout<<"swap("<<*_x<<","<<*_y<<")"<<endl;
p=_x;
_x=_y;
_y=p;
cout<<"swap("<<*_x<<","<<*_y<<")"<<endl;
}
其他觀點都一樣。
我再說一下的是:x,y的值和x,y的地址是不一樣的。
re: swap()引起的指針思考 任我行 2006-05-26 13:19
是我沒有說明白,方法一交換了地址,不過是交換了零時值而已,不會影響到外面。
“臨時指針x,y所指向的 a,b的內存地址”和“指針x,y的地址”是兩碼事。
“怎樣利用swap(int *x,int *y)交換x,y指向的地址值”,也就是a,b的內存地址。
你能交換a,b的內存地址么,不能。你要交換的是x,y的值。而不是交換a,b內存的值。
re: C++閱讀漸進書目 任我行 2006-05-26 13:11
不是你沒時間,而是你不去讀。
本人看過其中的兩本多。但還不是領會通透。
@HuYi
在一定程度上說,所有的程序員都是機器的Tester。
re: swap()引起的指針思考 任我行 2006-05-25 11:31
還以為你真的交換了地址呢,方法一才是交換了地址。
方法四只不過是交換了值。不防打印出他們的地址來看看。
交換地址需要傳指針的指針:
void swap(int **x,int **y)
{
cout<<*x<<" "<<*y<<endl;
int *t = *x;
*x = *y;
*y = *t;
cout<<*x<<" "<<*y<<endl;
}
re: C++隨筆 關于賦值操作 內存丟失 任我行 2006-05-23 08:53
嗯,是看錯了.
CEntity & CEntity::operator=(const CEntity & ent)
{
if(m_flag != NULL){
delete []m_flag;
m_flag = NULL;
}
if(ent.m_flag!=NULL)
memcpy(m_flag, ent.m_flag, SIZE);
return *this;
}
re: C++隨筆 關于賦值操作 內存丟失 任我行 2006-05-22 16:38
CEntity & CEntity::operator=(const CEntity & ent)
你的這個函數還是有問題。
else
{
if (m_flag == NULL)
{
m_flag = new char[SIZE];
}
在這里。
m_flag!=NULL的時候直接m_flag = NULL就造成了內存泄漏,原來的m_flag指向的內存丟失。
if(m_flag != NULL) delete []m_flag;
m_flag = new char[size];
char *s = "Student";
char *s1 = "Teacher";
改為:
char s[] = "Student";
char s1[] = "Teacher";
一字之差。
還有不少問題。
記得好像先搜索編譯目錄下所有的Lib和Dll,然后都Copy到一個文件下,添加到VC中就可以了。
thinking in java
Effective STL
都看完了,整個就是一個強字,
學習來了。
剛才練習了以下WinPcap,還是不太會用。
能否發些例子來學習學習。
先來一個發包程序,例如:自己組裝一些IP包,然后發出去,
在來一個收包程序,接收上面發過來的IP包,并提取其中相關的數據。
re: 我的第一篇文章 任我行 2006-04-22 09:16
推薦你用用。
Firefox沒有默認的多頁顯示,要裝插件,瀏覽有些非標準網頁,顯示錯亂,收藏夾好像不和IE兼容,
用FF不久,所以一直用Maxthon,一安裝就支持,多頁顯示,支持拖拽,廣告過濾等。
re: 最近學習計劃 任我行 2006-04-22 09:11
Email:oosky@163.com
re: 我的第一篇文章 任我行 2006-04-21 13:26
我一般都用Maxthon,習慣了它。
re: 最近學習計劃 任我行 2006-04-21 13:23
嗯,不錯。
都是好書。
安排的順序也蠻好的。
和我的計劃也一樣。不過,我看一本都沒看完就丟了,看另一本了。
很是浮躁。
對了,《Inside The C++ Object Model》你有清晰的電子版?我這份很是模糊,看起來非常吃力。
謝謝了
寫的真亂。下面寫法為什么意思?
bool ignore=true;
while(!istr.eof()){
istr>>temp;
if(ignore==true){
ignore=false;
continue;
}
array.push_back(temp);
}
re: 前段時間做的部分筆試題和答案 任我行 2006-04-18 13:05
char *mystrcpy(char *dst, const char *src)
{
char *ret = dst;
assert(NULL != dst && NULL != src);
while (*dst++ = *src++);
return ret;
}
你的函數中需要用到哪些寄存器就需要進棧保存這些在函數調用前的值,
比如:mov ecx 0ffff;
如果你在函數用用到ecx這個東西,那你就需要進棧保存它,
push ecx
函數調用完,然后
pop ecx
一般不用理會這些,編譯器會在函數調用前幫你做這些的。
匯編學了些,但沒有學好。略懂皮毛。
api函數的壓棧出棧和一般函數的壓棧出棧沒有什么不同吧。這個問題找找匯編知識應該有提示。壓棧就是保存現場,也就是保存現在的CPU寄存器,出棧就是恢復現場。
@saga.constantine
好,其實我想做一個proxy,先收,再改,然后發。
有方向就好辦了。到時搞到問題再來向你要答案。
學習中,我要做的是先收包,然后修改包頭,再發送包。
還不知道WinPcap能否做到。
我也看了看這個庫。沒有你研究的那么深入。
我在這里關注你的進展。
re: sap的幾道筆試題目(轉) 任我行 2006-04-13 08:47
1.
public: derived(int x, int y) {i=x;}
//derived(int x, int y):base(y){i=x;}
void printTotal() {int total = i+#base::i#;}
2.
try{
m_fi = new FI();
}
catch(bad_alloc &){
delete m_hr;
}
3.前兩題題目重復吧。
Cout<<sizeof(Base)<<endl; //32
A. 4 B.32 C.20 D.Platform-dependent
Cout<<sizeof(Base)<<endl;
A. 4 B.8 C.36 D.Platform-dependent
3.3
pb->f(1.0); //Base::f(double)
pb->g();//Derived::g()20
Matrix operator*(const Matrix& a,const Matrix& b)
感覺還有問題。
a,b的row,column 不相等沒有考慮。
liscense 不可以用到9.0上。
ICC9.0的liscense到網上去搜搜。
simulate array
int **gf16 = (int**)malloc(sizeof(int*)*16);
for (m = 0; m < 16; m++) {
gf16[m] = (int*)malloc(sizeof(int)*4);
}
for (i = 0; i < 4; i++)
gf16[i][i] = 1;
void Matrix::Mul(Matrix a,Matrix b)給誰用呢?