
C++内存管理
文章平均质量分 92
luckystar_sai
机会总是垂青有准备的人
展开
-
C 语言中结构体中成员所占内存的大小
在C99标准中,对于内存对齐的细节没有作过多的描述,具体的实现交由编译器去处理,所以在不同的编译环境下,内存对齐可能略有不同,但是对齐的最基本原则是一致的,对于结构体的字节对齐主要有下面两点: 结构体每个成员相对结构体首地址的偏移量(offset)是对齐参数的整 数倍,如有需要会在成员之间填充字节。编译器在为结构体成员开辟空间时,首先检查预开辟空间的地址相对于结构体首地址的偏移量是否为对齐参数的整数倍,若是,则存放该成员;若不是,则填充若干字节,以达到整数倍的要求。这句话中的对齐参数是取每个变量自身对原创 2020-10-20 23:01:22 · 3498 阅读 · 0 评论 -
C语言中的指针和内存泄漏
本文的内容包括:1 导致内存破坏的指针操作类型;2 在使用动态内存分配时必须考虑的检查点;3 导致内存泄漏的场景。有几种问题场景可能会出现,从而可能在完成生成后导致问题。在处理指针时,您可以使用本文中信息来避免许多问题。一、未初始化的内存 已知P分配了10个字节,这10个字节可能包含垃圾数据,如 char *p = malloc(10);如果在对这个 P赋值前,某...原创 2019-01-21 22:56:26 · 636 阅读 · 0 评论 -
深剖基类和派生类的虚函数表
1、当派生类实现基类的虚函数时,基类中虚函数表和虚函数地址和派生类中虚函数表和虚函数地址不同;当派生类不实现基类的虚函数时,基类中虚函数表和虚函数地址和派生类中虚函数表和虚函数的地址相同。1、派生类重新实现虚函数。查看其虚函数表和虚函数表中虚函数的地址 [cpp] view plain copy#include<iostream> using namespace std; clas...原创 2018-03-31 15:31:53 · 2545 阅读 · 2 评论 -
C++中内存分配的方式
1、栈:函数执行时,函数内的局部变量的存储单元可以在栈上创建。函数执行结束后这些存储单元自动释放。栈内存分配运算内置于处理器的指令器中,效率高,但是分配的内存容量有限。2、堆:就是那些new分配的内存块,由程序员来管理。一般对应着delete。3、自由存储区。就是那些malloc 等分派的内存块。她和堆一样,不过它用free来释放。4、全局/静态存储区。全局和静态变量被分派到统一内存快中。初始化和...原创 2018-03-16 18:08:38 · 324 阅读 · 0 评论 -
C++中new/delete 和malloc/free的区别
1、new、delete是C++中的操作符,而malloc和free是标准库函数。2、对于非内部数据对象来说,只使用malloc是无法完成动态对象要求的,一般在创建对象时需要调用构造函数,对象消亡时,自动的调用析构函数。而malloc free是库函数而不是运算符,不在编译器控制范围之内,不能够自动调用构造函数和析构函数。而NEW在为对象申请分配内存空间时,可以自动调用构造函数,同时也可以完成对对...原创 2018-03-08 16:09:26 · 15737 阅读 · 0 评论 -
浮点数在内存中的存储形式
浮点数: 浮点型变量在计算机内存中占用4字节(Byte),即32-bit。遵循IEEE-754格式标准。一个浮点数由2部分组成:底数m 和指数e。 ±mantissa × 2exponent(注意,公式中的mantissa 和 exponent使用二进制表示) 底数部分 使用2进制数来表示此浮点数的实际值。 指数部分 占用8-bit的二进制数,可表示数原创 2017-10-06 09:27:29 · 918 阅读 · 0 评论 -
内存的概念/windows中内存管理的方法
内存是计算机中重要的部分,是计算机沟通的桥梁。计算机的程序都是在内存中运行的,内存又称为内存存储器,起作用是用于暂时存放计算机中运算的数据,以及与外部存储器交换的数据。只要计算机在运行,CPU就会把需要运算的数据放到内存中,结束后CPU 再将结果传送出去。内存又分为物理内存和虚拟内存:1.物理内存:即插在主板上的内存条。他是固定的,内存条的容量多大,物理内存就有多大(集成显卡系统除原创 2017-09-30 20:45:36 · 475 阅读 · 0 评论 -
宏定义、内联函数、普通函数的区别
一、宏定义和内联函数的区别1. 宏定义不是函数,但是使用起来像函数。预处理器用复制宏代码的方式代替函数的调用,省去了函数压栈退栈过程,提高了效率。 内联函数本质上是一个函数,内联函数一般用于函数体的代码比较简单的函数,不能包含复杂的控制语句,while、switch,并且内联函数本身不能直接调用自身。如果内联函数的函数体过大,编译器会自动的把这个内联函数变成普通函数。转载 2017-10-07 21:26:24 · 594 阅读 · 0 评论 -
C++中虚函数工作原理和(虚)继承类的内存占用大小计算
C++中虚函数工作原理和(虚)继承类的内存占用大小计算标签: 工作c++class编译器fun2012-08-19 17:30 52608人阅读 评论(49) 收藏 举报 分类:面试珠玑(84) 版权声明:本文为博主原创文章,未经博主允许不得转载。转载请标明出处,原文地址:http://blog.youkuaiyun.com/hackbute转载 2017-09-27 22:37:53 · 241 阅读 · 0 评论 -
C++中多线程面试经典问题
1、基本概念 详见:线程和进程关系和区别、同步和互斥、进程间通信2、以下多线程对int型变量x的操作,哪几个不需要进行同步(D) A. x=y; B. x++; C. ++x; D. x=1; 详见:多线程二 多线程中的隐蔽问题揭秘3、多线程中栈与堆是公有的还是私有的 (C)转载 2017-09-17 21:01:34 · 6841 阅读 · 0 评论 -
try-catch-throw
1、try-catch语句可以和throw语句不在一个函数中;2、一个try语句后面可以跟若干个catch语句,但是一个函数不可以只有try语句,而没有catch语句;原创 2017-09-17 19:28:29 · 367 阅读 · 0 评论 -
C++浅拷贝与深拷贝的问题解析
#define _CRT_SECURE_NO_WARNINGS#include#includeusing namespace std;class Name{public:Name(const char*myp){len = strlen(myp);p = (char*)malloc(len+1);strcpy(p,myp);}~Name原创 2017-05-12 11:46:16 · 369 阅读 · 0 评论