![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++语言基础
文章平均质量分 61
curiknow
这个作者很懒,什么都没留下…
展开
-
C++ sizeof 使用规则及陷阱分析
1、什么是sizeof 首先看一下sizeof在msdn上的定义: The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value o转载 2013-07-08 17:58:13 · 424 阅读 · 0 评论 -
栈空间和堆空间
一个由C/C++编译的程序占用的内存分为以下几个部分: 1、栈区(stack):又编译器自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构的栈。 2、堆区(heap):一般是由程序员分配释放,若程序员不释放的话,程序结束时可能由OS回收,值得注意的是他与数据结构的堆是两回事,分配方式倒是类似于数据结构的链表。 3、全局区(static):也叫静态数据内转载 2013-07-08 22:15:34 · 485 阅读 · 0 评论 -
整型提升
C++ primer中关于整型提升(integral promotion)的定义为:"A character, a short integer, or an integer bit-field, all either signed or not, or an object of enumeration type, may be used in an expression wherever an转载 2013-07-23 21:52:03 · 516 阅读 · 0 评论 -
空指针的解引用
NULL指针的访问异常是C程序员常见的bug,事实上部分情况下空指针可以解引用,下面的thread,列出了几个例子。http://stackoverflow.com/questions/6793262/why-dereferencing-a-null-pointer-is-undefined-behaviourOn the PDP-11, it happened that addres转载 2013-07-24 21:00:37 · 3187 阅读 · 0 评论 -
有虚函数或虚继承关系的sizeof问题
1.只存在虚函数时的情况存在VtPtr指针,指向虚函数表。在普通继承时,子类会修改父类的虚函数表(在尾部添加子类的虚函数指针),所以子类对象的首部不会增加自己的Vtptr。具体内容见:http://hi.baidu.com/jjsjmmkifxbaotq/item/0eb7e4304acb3b2cceb9fe3f2. 存在虚继承关系时的情况有关虚继承的定义,参见博文http原创 2013-07-28 22:50:07 · 574 阅读 · 0 评论 -
malloc/free与new/delete
相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内转载 2013-07-28 16:25:48 · 340 阅读 · 0 评论 -
句柄VS.指针
一、为什么我们需要句柄? 更准确地说,是windows需要句柄。windows需要向程序员提供必要地编程接口,在这些接口中,允许程序员访问、创建和销毁对象。但是,出于封装地考虑,windows并不想向程序员返回指针。指针包含了太多的信息。首先指针给出了对象存储的确切位置;其次,要操作一个指针,程序员必须知道指针所指对象的内部结构特征,也即,windows必须向程序员暴露相应的数据转载 2013-07-28 16:09:23 · 765 阅读 · 0 评论