C/C++基础知识
文章平均质量分 65
Kato33
这个作者很懒,什么都没留下…
展开
-
操作系统中的结构体对齐,字节对齐
原因平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要做两次访问;而对齐的内存仅需要一次访问。规则数据成员对齐规则:结构(struct)(或union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据的对齐按照#program pack指定的数值和这个数据成员自身长度中,比较小的那个进行原创 2021-03-10 16:57:27 · 269 阅读 · 0 评论 -
详解虚拟内存模型和malloc内部原理
???? 文章引用公共号程序喵大人,喜欢的请前往订阅。通过/proc文件系统探究虚拟内存我们会通过/proc文件系统找到正在运行的进程的字符串所在的虚拟内存地址,并通过更改此内存地址的内容来更改字符串内容,使你更深入了解虚拟内存这个概念!这之前先介绍下虚拟内存的定义!虚拟内存虚拟内存是一种实现在计算机软硬件之间的内存管理技术,它将程序使用到的内存地址(虚拟地址)映射到计算机内存中的物理地址,虚拟内存使得应用程序从繁琐的管理内存空间任务中解放出来,提高了内存隔离带来的安全性,虚拟内存地址通常是连续的地原创 2021-03-08 23:22:07 · 766 阅读 · 0 评论 -
存储类别、链接和内存管理
存储类别可以用存储期(storage duration)描述对象,所谓存储期是指对象在内存中保留了多长时间。标识符用于访问对象,可以用作用域和链接描述标识符,标识符的作用域和链接表明了程序的哪些部分可以使用它。不同的存储类别具有不同的存储期、作用域和连接。标识符可以在源代码的多文件中共享、可用于特定文件的任意函数中、可仅限特定函数中使用,甚至只在函数中的某部分使用。对象可存在于程序的执行期,也可以仅存在于它所在函数的执行期。对于并发编程,对象可以在特定线程的执行期存在。可以通过函数调用的方式显示分配和释放原创 2021-03-06 10:57:01 · 75 阅读 · 0 评论 -
关键字static的使用详细
???? 摘自微信公众号 一口Linux 的文章要想搞清楚关键字static的使用方法,必须首先搞清楚,可执行程序段的分类以及各段在内存区的逻辑地址的映射。一、可执行程序内存分配1. 可执行程序程序分段可使用如下命令行对可执行文件进行查看一个程序的分段:$ size a.out text data bss dec hex filename 1317 500 24 1841 731 a.out输出各段说明:1️⃣ bs原创 2021-03-06 01:04:58 · 59 阅读 · 0 评论 -
几个术语:数据对象、左值、右值和运算符
在C语言中,类似这样的语句没有意义(实际上是无效的):2002 = bmw因为在这种情况下,2001被称为右值(rvalue),只能是字面常量。不能给常量赋值,常量本身就是它的值。因此,在编写代码时要记住,=号左侧的项必须是一个变量名。实际上,赋值运算符左侧必须引用一个存储位置。最简单的方法就是使用变量名。几个属于:数据对象、左值、右值和运算符赋值表达式语句的目的是把值储存到内存位置上。用于储存值的数据存储区域称为数据对象(data object)。C标准只有在提到这个概念时才会用到对象这个术语。使原创 2021-03-05 23:18:13 · 298 阅读 · 0 评论