摘要:
# 56.malloc与free的实现原理? 1.在标准C库中,提供了malloc/free函数分配释放内存,这两个函数底层是由brk、mmap、,munmap这些系统调用实现的; 2.brk是将数据段(.data)的最高地址指针_edata往高地址推,mmap是在进程的虚拟地址空间中(堆和栈中间, 阅读全文
摘要:
# 55.malloc申请的存储空间能用delete释放吗? 不能,malloc /free主要为了兼容C,new和delete 完全可以取代malloc /free的。 malloc /free的操作对象都是必须明确大小的,而且不能用在动态类上。 new 和delete会自动进行类型检查和大小,m 阅读全文
摘要:
# 54.new和delete的实现原理,delete是如何知道释放内存的大小的? 1、 new简单类型直接调用operator new分配内存; 而对于复杂结构,先调用operator new分配内存,然后在分配的内存上调用构造函数; 对于简单类型,new[]计算好大小后调用operator ne 阅读全文
摘要:
# 1.重载new和delete 尽管我们说能够 “重载new和delete",但是实际上重载这两个运算符与重载其他运算符的过程大不相同。要想真正掌握重载new和delete的方法,首先要对new表达式和delete表达式的工作机理有更多了解。 当我们使用一条new表达式时: ```C++ // n 阅读全文
摘要:
==☀警告== ``` volatile的确切含义与机器有关,只能通过阅读编译器文档来理解。要想让使用了volatile的程序在移植到新机器或新编译器后仍然有效,通常需要对该程序进行某些改变。 ``` 直接处理硬件的程序常常包含这样的数据元素,它们的值由程序直接控制之外的过程控制。例如,程序可能包含 阅读全文
摘要:
在C++中,final是一个关键字,用于修饰类的成员变量和成员函数。 1.final修饰成员变量:当一个类中的成员变量被声明为final时,它就变成了常量,即它的值不能再被修改。final修饰的成员变量必须在类定义中进行初始化,且只能初始化一次。 假设我们有一个名为Person的类,其中包含一个成员 阅读全文