![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
lggrief
这个作者很懒,什么都没留下…
展开
-
C++ STL中的vector的内存分配与释放
1.vector的内存增长vector其中一个特点:内存空间只会增长,不会减小,援引C++ Primer:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储。设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间、拷贝元素、撤销旧空间,这样性能难以接受。因此STL实现者在对vector进行内存分配时,其实际分转载 2016-10-12 13:52:47 · 338 阅读 · 0 评论 -
C++派生类构造函数
派生类构造函数调用顺序:1.基类的构造函数.2.子对象类的构造函数.3.派生类构造函数.当对象被删除时,派生类的析构函数被执行,由于析构函数也不能被继承,因此在执行派生类的析构函数时,基类的析构函数也会被调用。先执行派生类的析构函数,再执行子对象类的析构函数,再执行基类的构造函数。#includeusing namespace std;class A{pub原创 2016-10-12 13:55:54 · 460 阅读 · 0 评论 -
C++继承详解
继承方式有3种:public,protected,private. 共有继承的特点是基类的公有成员和保护成员作为派生类的成员时,都保持原有的状态,而基类的私有成员仍然是私有的,但基类的私有成员不可直接访问,只能通过基类的函数来访问基类的私有成员。 保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元函数访问,基类的私有成员仍然是私转载 2016-10-12 13:57:37 · 321 阅读 · 0 评论 -
关于内存 GetMemory
void GetMemory(char *p){ p = (char *)malloc(100);}void Test(void){ char *str = NULL; GetMemory(str); strcpy(str, “hello world”); printf(str);}请问运行Test 函数会有什么样的结果?转载 2016-10-12 13:54:06 · 170 阅读 · 0 评论 -
C++检测标点符号
下面是关于C++如何检测标点符号的,无论中文还是英文标点,这里能检测到的中文标点符号为GB2312编码格式的BOOL isText(string cStrName){ const char *str=cStrName.c_str(); char ch = *str++; int i=1; if(!(ch=='_' || ((ch & 0x80原创 2016-10-12 14:42:06 · 5740 阅读 · 0 评论 -
C/C++在调试程序时运行代码行数与实际不一致
问题如下:在C/C++中,利用__LINE__这个宏可以打印当前代码实际运行所在的行,在调试程序的时候发现不一致然后利用这个宏查看了相隔的行数差,这里本应该是740行,在output窗口里面实际是736,如图所示,原来调试的时候总是不一致,因此调试代码很头疼。最后发现了一种解决方法,在C/C++里面有个宏可以自定义代码行数,#line number,这里的number就是你要设置的原创 2016-10-12 14:48:12 · 3109 阅读 · 0 评论 -
浅谈C/C++内存泄露及其检测工具
对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技 术被研究出来以应对这个问题,比如 Smart Pointer,Garbage Collection等。Smart Pointer技术比较成熟,STL中已经包含支持Smart Pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题;Garbage Collection技术在Java中已经转载 2016-10-12 14:49:26 · 343 阅读 · 0 评论 -
C中的volatile用法
volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。例如:volatile int i=10;int j = i;...int k = i;转载 2016-10-12 14:58:51 · 199 阅读 · 0 评论 -
vector::erase()方法的详细介绍及问题解答
vector::erase():从指定容器删除指定位置的元素或某段范围内的元素vector::erase()方法有两种重载形式如下:iterator erase( iterator _Where);1.iterator erase( iterator _First, iterator _Last);如果是删除指定位置的元素时:返回值是一个迭代器,指向删除元素下一转载 2016-10-12 16:10:04 · 450 阅读 · 0 评论