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