任我行

一天一个脚印......
每日一句:
posts - 54, comments - 218, trackbacks - 1, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
共2页: 1 2 
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吧。
郁闷,为什么比较字串要这样子呢,用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;
嗯,是看错了.
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)
你的这个函数还是有问题。
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: VC6 + ICC8.1+...VC6与VS2005媲美 任我行 2006-04-22 16:52
期待开源。
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);
}
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 不相等没有考虑。
re: VC6 + ICC8.1+...VC6与VS2005媲美 任我行 2006-04-12 09:04
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)给谁用呢?
共2页: 1 2