« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
|
公告 |
My blog is about my major : network security.the most papers are talk about it ,I like my major ,i wish you could find what's you need in it. |
统计 |
blog名称:我的IT人生 日志总数:78 评论数量:185 留言数量:-1 访问次数:523829 建立时间:2006年4月5日 |
| 
|
本站首页 管理页面 写新日志 退出
[C/C++]类似深构造函数的运算符‘=’重载用法 |
当类中包含指针成员*P而使用默认的赋值运算符‘=’来进行赋值操作的时候,会出现该类的这两个对象的*P指向内存中(堆中)同一片区域的现象,这时,如果这两个对象调用析构函数来释放空间,则会出现同一个内存区域被反复释放的危险操作。(=操作类似于浅析构函数。)
解决方法:重载‘=’操作符,并在函数中重新new空间,以方便析构函数释放。
e.g.
sample &operator=(sample &s)
{
delete p; //清除原来的指针
p=new char[strlen(s.p)+1];//重新申请指针及空间
strcpy(p,s.p);//拷贝构造过程
return *this;
}
|
阅读全文(2671) | 回复(0) | 编辑 | 精华 | 删除 |
[C/C++]SDK简介 |
SDK是Software Development Kit的缩写,中文意思是“软件开发工具包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。具体到我们这个系列教程,我们后面只讨论广义 SDK 的一个子集——即开发 Windows 平台下的应用程序所使用的 SDK。
其实上面只是说了一个 SDK 大概的概念而已,理解什么是 SDK 真有这么容易吗?恐怕没这么简单!为了解释什么是 SDK 我们不得不引入 API、动态链接库、导入库等等概念。^_^,不要怕,也就是几个新的名词而已,我也是到了大学快结束的时候才体会到其实学习新知识就是在学习新名词、新概念和新术语。
首先要接触的是“API”,也就是 Application Programmi
|
阅读全文(3660) | 回复(0) | 编辑 | 精华 | 删除 |
[C/C++]银行家算法 |
转自:http://dev.csdn.net/article/52/52226.shtm
特别申明:转载一位大哥的程序 一.算法介绍: **数据结构: 1.可利用资源向量Available 2.最大需求矩阵Max 3.分配矩阵Allocation 4.需求矩阵Need **功能介绍: 模拟实现Dijkstra的银行家算法以避免死锁的出现.分两部分组成: 第一部分:银行家算法(扫描) 1.如果Request<=Need,则转向2;否则,出错 2.如果Request<=Available,则转向3,否则等待 3.系统试探分配请求的资源给进程 4.系统执行安全性算法 第二部分:安全性算法 1.设置两个向量 (1).工作向量:Work=Availabl
|
阅读全文(2034) | 回复(0) | 编辑 | 精华 | 删除 |
[C/C++]关于printf的另类用法 |
main() { char a[]="a"; char b='b'; int c=0x12ff7c; printf("%x\n",a); //输出 12ff7c printf("%c\n",a); //输出 | printf("%d\n",b); //输出 98 printf("%c\n",b); //输出 b printf("%c\n",c); //输出 | printf("%x\n","wefd"); //输出 ? printf("%c\n","dfdfd"); //输出 ? printf("%c\n","fd"); //输出 ? printf("%c\n","jk
|
阅读全文(1869) | 回复(0) | 编辑 | 精华 | 删除 |
[C/C++]如何用栈实现递归与非递归的转换(2)(转 GOOD) |
三.三个例子 好了上面的理论知识已经足够了,下面让我们看看几个例子,结合例子加深我们对问题的认识 .即使上面的理论你没有完全明白,不要气馁,对事物的认识总是曲折的,多看多想你一定可以明 白(事实上我也是花了两个星期的时间才弄得比较明白得).
1)例子一:
f(n) = n + 1; (n <2) f[n/2] + f[n/4](n >;= 2); 这个例子相对简单一些,递归程序如下: int f_recursive(int n) &n
|
阅读全文(1917) | 回复(0) | 编辑 | 精华 | 删除 |
[C/C++]如何用栈实现递归与非递归的转换(1)(转 GOOD) |
如何用栈实现递归与非递归的转换
http://www.chinaunix.net 作者:converse 发表于:2006-08-24 09:00:06
原文:http://www.chinaunix.net/jh/23/331522.html http://blog.csdn.net/dragondwy/archive/2006/06/30/855391.aspx http://liqunsun.spaces.live
|
阅读全文(1723) | 回复(0) | 编辑 | 精华 | 删除 |
[C/C++]谈VC++对象模型( Good 转) |
一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细节。对于使用VC++的程序员来说,还应该了解一些VC++对于C++的诠释。Inside the C++ Object Model虽然是一本好书,然而,书的篇幅多一些,又和具体的VC++关系小一些。因此,从篇幅和内容来看,译者认为本文是深入理解C++对象模型比较好的一个出发点。
这篇文章以前看到时就觉得很好,旧文重读,感觉理解得更多一些了,于是产生了翻译出来,与大家共享的想法。虽然文章不长,但时间有限,又若干次在翻译时打盹睡着,拖拖拉拉用了小一个月。
一方面因本人水平所限,另一方面因翻译时经常打盹,错误之处恐怕不少,欢迎大家批评指正。
前言
了解你所使用的编程语言究竟是如何实现的,对于C++程序员可能特别有意义。首先,它可以去除我们对于所使用语言的神秘感,使我们不至于对于编译器干的 活感到完全不可思议;尤其重要的是,它使我们在Debug和使用语言高级特性的时候,有更多的把握。当需要提高代码效率的时候,这些知识也
|
阅读全文(1839) | 回复(0) | 编辑 | 精华 | 删除 |
[C/C++]C++内存分配问题 |
网上看到,感觉讲得很清晰,刚好能解答我上次的笔试题
char* r = "hello word!"; //指针在栈上,数据放在常量区; char b[]="hello word!" //b在栈上,数据在栈上; *r = 'w'; //修改常量区的值,报错; *b='w'; //修改栈上的值,允许;
其实应该是语法错误,可是VC++6.0没有警告或者错误,r指向的是文字常量区,此区域是编译的时候确定的,并且程序结束的时候自动释放的, *r = 'w';企图修改文字常量区引起错误,b的区别在于其空间是在栈上分配的,因此没有错误。
const char* r = "hello word!"; //与上同;
*r = 'w'; //对常量进行赋值,报错;
一个由c/C++编译的程序占用的内存分为以下几个部分 1、 |
阅读全文(1866) | 回复(0) | 编辑 | 精华 | 删除 |
|