c++
听音乐就好
这个作者很懒,什么都没留下…
展开
-
C++中extern “C”含义深层探索
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不转载 2012-02-16 10:36:54 · 452 阅读 · 0 评论 -
全局变量和局部变量初始化问题
如果定义为全局变量,系统会自动把变量初始化为默认值(内置类型初始化为系统默认值,自定义类型调用相应的初始化函数进行初始化)定义为局部变量时,系统不会自动初始化变量,我们必须手动对变量进行初始化(无论是内置类型还是自定义类型),否则得到的结果可能和我们预期的不一致,甚至导致程序出错。参考资料:http://blog.csdn.net/ygc87/article/details/68621转载 2015-03-25 13:31:44 · 1444 阅读 · 0 评论 -
delete this
1.在delete this之后进行的其他任何函数调用,只要不涉及到this指针的内容,都能够正常运行。一旦涉及到this指针,如操作数据成员,调用虚函数等,就会出现不可预期的问题。2.如果在类的析构函数中调用delete this,delete this会去调用本对象的析构函数,而析构函数中又调用delete this,形成无限递归,造成堆栈溢出,系统崩溃。note:根本原因在于转载 2015-03-06 10:00:18 · 1857 阅读 · 0 评论 -
同步,异步,阻塞,非阻塞
同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。异步:异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。阻塞:阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回非阻塞:非阻塞和阻塞的概念相对应,指在原创 2015-03-06 17:50:30 · 433 阅读 · 0 评论 -
函数模版和类模版
函数模板的实例化是由编译程序在处理函数调用时自动完成的类模板的实例化必须由程序员在程序中显式地指定原创 2015-03-06 14:08:56 · 507 阅读 · 0 评论 -
多线程,并行,异步
线程:是进程中某个单一顺序的控制流。也被称为轻量进程(lightweight processes).计算机科学术语,指运行中的程序的调度单位.并行:一般指并行计算,是说同一时刻有多条指令同时被执行,这些指令可能执行于同一CPU的多核上,或者多个CPU上,或者多个物理主机甚至多个网络中.异步:与同步相对应,异步指的是让CPU暂时搁置当前请求的响应,处理下一个请求,当通过轮询或其他方式得到原创 2015-03-06 17:27:57 · 561 阅读 · 0 评论 -
内存碎片研究
内存碎片http://blog.csdn.net/xuzhonghai/article/details/7285821原创 2015-03-18 10:45:30 · 711 阅读 · 0 评论 -
void* memcpy(void* dst, const void* src, int size)
#include void *memcpy(void *to, const void *from, size_t count)函数memcpy()从from指向的数组向to指向的数组复制count个字符。如果两数组重叠,不定义函数的行为。在C99中,to和from由restrict修饰。先来看看微软的实现:void * __cdecl memcpy (转载 2015-03-18 10:12:54 · 5498 阅读 · 0 评论 -
线程的栈空间
线程栈空间的大小http://blog.csdn.net/cyblueboy83/article/details/7645331设置堆栈大小http://www.cnblogs.com/nsnow/archive/2010/08/06/1794490.html原创 2015-03-18 11:32:16 · 1470 阅读 · 0 评论 -
必须在类初始化列表中初始化的几种情况
1. 类成员为const类型2. 类成员为引用类型3.类成员为没有默认构造函数的类类型4. 如果类存在继承关系,派生类必须在其初始化列表中调用基类的构造函数参考资料:http://www.cnblogs.com/graphics/archive/2010/07/04/1770900.htmlhttp://www.cnblogs.com/k转载 2015-03-25 13:39:20 · 1211 阅读 · 0 评论 -
string赋值
待整理。。。。。。字符串 = 和 assign()string a = "aaaaa\0aaaa";string b = a;此时会出现什么情况?b.assign(a);遇到 protobuf进行ParseFromString(),和下面链接类似http://blog.csdn.net/dreamvyps/article/details/30070877原创 2015-04-03 17:34:19 · 721 阅读 · 0 评论 -
变量的声明和定义
变量的声明有2种情况:1>建立存储空间(声明,定义):int a;2>不必建立存储空间(声明):extern int a;参考资料:http://www.360doc.com/content/11/1105/21/4083881_162098853.shtml原创 2015-03-01 17:59:19 · 535 阅读 · 0 评论 -
virtual-构造函数中调用虚函数问题
struct C180{ C180() { foo(); this->foo(); } virtual foo() { cout }};struct C190 : public C180{ C190() {} virtual foo() { cout }}; 执行如下代码:C190 obj;obj.foo(转载 2015-02-25 14:24:29 · 515 阅读 · 0 评论 -
c/c++内存问题
1.内存问题的原因及分类在c/c++程序中,有关内存使用的问题是最难发现和解决的。这些问题可能导致程序莫名其妙的停止、崩溃,或者不断消耗内存直至资源耗尽。由于c/c++语言本身的特质和历史原因,程序员使用内存需要注意的事项较多,而且语言本身也不提供类似Java的垃圾清理机制。编程人员使用一定的工具来查找和调试内存有关的问题是十分必要的。总的说来,与内存有关的问题可以分成两类:内转载 2012-02-16 10:00:23 · 807 阅读 · 0 评论 -
谈C/C++指针精髓(三)
1.4指针的运算1.4.1赋值运算指针变量的赋值运算有以下几种形式:1.4.1.1指针变量初始化赋值如下:int a;int *ip=&a;1.4.1.2把一个变量的地址赋予指向相同数据类型的指针变量。例如:int a;int *ip;ip=&a; //把整型变量a的地址赋予整型指针变量ip1.4.1.3把一个指针转载 2012-06-13 09:46:35 · 532 阅读 · 0 评论 -
谈C/C++指针精髓(一)
[摘要]指针是C和C++语言编程中最重要的概念之一,也是最容易产生困惑并导致程序出错的问题之一。利用指针编程可以表示各种数据结构, 通过指针可使用主调函数和被调函数之间共享变量或数据结构,便于实现双向数据通讯;并能像汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C和C++语言的功能。在本文中,主要分两部分对指针进行讨论。首先,基础篇讨论关于指针的内容和运算操作转载 2012-06-13 09:42:46 · 496 阅读 · 0 评论 -
C++回调函数用法
一回调函数我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理、用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢?使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而 那个函数在需要的时候,利用传递转载 2012-06-13 09:38:35 · 615 阅读 · 0 评论 -
谈C/C++指针精髓(二)
1.3指针与内存管理利用指针你可以将数据写入内存中的任意位置,但是,一旦你的程序中有一个野指针("wild“pointer),即指向一个错误位置的指针,你的数据就危险了—存放在堆中的数据可能会被破坏,用来管理堆的数据结构也可能会被破坏,甚至操作系统的数据也可能会被修改,有时,上述三种破坏情况会同时发生。所以合理的正确的分配指针的地址是非常重要的。1.3.1内存分配的方式内存转载 2012-06-13 09:45:04 · 421 阅读 · 0 评论 -
当前不会命中断点。还没有为该文档加载任何符号 (c++)
如果这个可以编译,要想调试那需要改这几个地方1、链接器-〉调试 -〉生成调试信息 选择 “是(/DEBUG)”2、c/c++ -> 常规 -〉调试信息格式 选择 “用于“编辑并继续”的程序数据库(/ZI)”3、c/c++ -> 优化 -〉优化 选择 “禁用(/Od)”转载 2013-03-11 14:26:17 · 2772 阅读 · 0 评论 -
返回值的不正确处理导致的内存泄漏
返回值的不正确处理有时,某些函数会返回对动态分配的内存的引用。跟踪该内存位置并正确地处理它就成为了 calling 函数的职责。char *func ( ){ return malloc(20); // make sure to memset this location to ‘\0’…}void callingFunc ( ){ func ( ); // Pro转载 2013-12-23 15:30:22 · 1254 阅读 · 0 评论 -
数组相关问题
1.数组作为函数参数规定:如果将二维数组作为参数传递给函数,那么在函数的参数声明中必须指明数组的列数,数组的行数没有太大关系,可以指定也可以不指定。因为函数调用时传递的是一个指针,它指向由行向量够成的一维数组。因此二维数组作为函数参数正确写法如下所示: void Func(int array[3][10]); void Func(int array[ ][10]);原创 2015-01-06 14:04:32 · 624 阅读 · 0 评论 -
c++基础
virtual:虚函数只有在通过基类指针或引用间接指向派生类子类型时多态性才会起作用纯虚函数虚拟继承参考资料:http://www.cnblogs.com/xd502djj/archive/2010/09/22/1832912.html原创 2015-01-04 09:21:32 · 453 阅读 · 0 评论 -
指针相关问题
指针相关问题指针数组,数组指针指针函数,函数指针指针常量,常量指针指针和引用的区别指针和数组名数组名退化为指针如何避免野指针含有虚函数类的大小(虚表指针)原创 2015-01-05 19:12:41 · 576 阅读 · 0 评论 -
time
tm,localtime,time_t,mktime,gmtime,difftime,参考资料:http://www.cnblogs.com/hhpjxbk/archive/2009/10/06/1578385.html原创 2015-06-01 21:05:40 · 591 阅读 · 0 评论