上一页 1 ··· 36 37 38 39 40

2021年6月8日

摘要: delete只会调用一次析构函数。 delete[]会调用数组中每个元素的析构函数。 阅读全文
posted @ 2021-06-08 17:16 超人不会灰啊 阅读(99) 评论(0) 推荐(0) 编辑
 
摘要: new的实现过程是:首先调用名为operator new的标准库函数,分配足够大的原始为类型化的内存,以保存指定类型的一个对象;接下来运行该类型的一个构造函数,用指定初始化构造对象;最后返回指向新分配并构造后的的对象的指针 delete的实现过程:对指针指向的对象运行适当的析构函数;然后通过调用名为 阅读全文
posted @ 2021-06-08 17:15 超人不会灰啊 阅读(153) 评论(0) 推荐(0) 编辑
 
摘要: 相同点: 都可用于内存的动态申请和释放 不同点: 前者是C++运算符,后者是C/C++语言标准库函数 new自动计算要分配的空间大小,malloc需要手工计算 new是类型安全的,malloc不是 new调用名为operator new的标准库函数分配足够空间并调用相关对象的构造函数,delete对 阅读全文
posted @ 2021-06-08 17:05 超人不会灰啊 阅读(80) 评论(0) 推荐(0) 编辑
 
摘要: 虚函数表是全局共享的元素,即全局仅有一个,在编译时就构造完成 由于虚表指针vptr跟虚函数密不可分,对于有虚函数或者继承于拥有虚函数的基类,对该类进行实例化 时,在构造函数执行时会对虚表指针进行初始化,并且存在对象内存布局的最前面。 阅读全文
posted @ 2021-06-08 00:12 超人不会灰啊 阅读(344) 评论(0) 推荐(0) 编辑
 
摘要: 申请方式不同: 栈由系统自动分配。 堆是程序员自己申请和释放的。 申请大小限制不同: 栈顶和栈底是之前预设好的,栈是向栈底扩展,栈向下,向低地址方向增长,大小固定,可以通过ulimit -a查看,由ulimit -s修改。 堆向高地址扩展,是不连续的内存区域,大小可以灵活调整。 申请效率不同: 栈由 阅读全文
posted @ 2021-06-08 00:09 超人不会灰啊 阅读(107) 评论(0) 推荐(0) 编辑
 
摘要: 指针是一个变量,存储的是一个地址,引用跟原来的变量实质上是同一个东西,是原变量的别名 指针可以有多级,引用只有一级 指针可以为空,引用不能为NULL且在定义时必须初始化 指针在初始化后可以改变指向,而引用在初始化之后不可再改变 sizeof指针得到的是本指针的大小,sizeof引用得到的是引用所指向 阅读全文
posted @ 2021-06-08 00:05 超人不会灰啊 阅读(231) 评论(0) 推荐(0) 编辑
 
摘要: 结构体内成员按照声明顺序存储,第一个成员地址和整个结构体地址相同。 未特殊说明时,按结构体中size最大的成员对齐(若有double成员,按8字节对齐。) c++11以后引入两个关键字 alignas与 alignof。其中 alignof 可以计算出类型的对齐方式, alignas 可 以指定结构 阅读全文
posted @ 2021-06-08 00:03 超人不会灰啊 阅读(104) 评论(0) 推荐(0) 编辑
 
摘要: 1、在main执行之前和之后执行的代码可能是什么? main函数执行之前,主要就是初始化系统相关资源: 设置栈指针 初始化静态 static 变量和 global 全局变量,即 .data 段的内容 将未初始化部分的全局变量赋初值:数值型 short , int , long 等为 0 , bool 阅读全文
posted @ 2021-06-08 00:01 超人不会灰啊 阅读(450) 评论(1) 推荐(0) 编辑
上一页 1 ··· 36 37 38 39 40