![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 81
wyunteng
这个作者很懒,什么都没留下…
展开
-
谈谈C语言的溢出
溢出是C语言中最常见的漏洞。最常见的溢出包括数组溢出、数溢出、缓冲区溢出、指针溢出以及栈溢出,下面笔者就对这些溢出做一个总结归纳。 1 数组溢出 数组溢出是最常见的一种溢出。因为在C语言中,含N个元素的数组下标是从0开始,到N-1结束,而且C语言没有提供数组越界检查的机制。 请看如下代码: int main (int argc, char* argv[]) { int nSum = 0; int nArray[] = {原创 2011-04-21 19:36:00 · 13289 阅读 · 2 评论 -
String类的C++实现
String类的C++实现是一个C++面向对象的经典例子,下面就来看看String类是如何实现的: String.h String.cpp 一个更为完整的String类C++实现: String.h String.cpp 写时拷贝(Copy On Write) 在C++程序中,经常会遇到多个对象具有相同值的情况。这个时候完全没有必要将这些值分开存储,而可以让这些对象共享同一分值。比如下面的字符串对象的例子:原创 2011-04-28 22:48:00 · 2789 阅读 · 0 评论 -
详细解析i++与++i
i++与++i是特殊的自增运算,类似的还有自减操作运算i--与--i。下面从C与C++两个角度来比较这两种形式的运算方式。 1.C中 简单的地说,++i和i++,作为一个语句单独使用时(如i++;或者++i;),就是i = i + 1,它们之间没有区别。而在作为语句的一部分时,a = ++i相当于i = i + 1; a = i;通过表达式就可以看出,因为++在前,所以是先执行加1操作,再执行赋值操作。而a = i++相当于a = i; i = i + 1;++在后,所以是先执行赋值操作,再执行加1操作原创 2011-04-30 13:01:00 · 1759 阅读 · 2 评论