首页 > 试题广场 >

什么是内存对齐?内存对齐有什么意义?2.请简述C++中函数调

[问答题]
什么是内存对齐?内存对齐有什么意义?2. 请简述C++中函数调用过程并解释栈帧的概念。(可以举例说明)
内存对齐是指编译器调整对象字段的偏移量 , 从而优化读取速度的一种技术 .
内存对齐能减少cpu的访存次数 .

函数调用的过程是 : 
将当前运行地址压入栈中 .
将参数压入栈中 , 如果参数较少的话会直接存到寄存器中 . 
跳转到目标函数地址 .
执行函数体 .
销毁局部变量和函数形参 . 
弹出调用者的运行地址 .
跳转回调用方 .

栈帧储存了返回地址、函数形参、函数体内创建的临时变量 .
发表于 2022-07-05 15:59:52 回复(0)
内存对齐就是不同类型的变量在内存中占据的字节数不一样,需要在程序实际运行时,由系统自动把他们占据的字节数设成一样的,从而方便cpu的读取,有利于减少cpu访存次数,使程序运行的快。
c++中的函数调用是用栈来实现的。调用者先调用的函数先入栈,后调用的函数**栈。等被调用函数执行完后,按照相反的顺序在出栈。
发表于 2021-04-20 20:21:14 回复(0)
变量申请内存的最小单位是几字节就是几字节对齐。内存对齐提高CPU访问内存的速度。

调用函数会开辟栈内存,称为栈帧。
当前函数的所有临时变量在当前栈帧内申请内存,操作数据,函数返回后释放当前栈帧。

栈是由高地址向地址扩展的内存。

发表于 2022-03-20 21:53:00 回复(0)
内存对齐:计算机对数据的存储区域有限制,数据在内存中的首地址必须为k(4、8等)的整数倍
内存对齐的意义:cpu以k(4、8等)个字节为单位存取数据,内存对齐可以减少cpu访问内存的次数,加快存取速度
c++函数调用过程:函数参数代入、函数栈帧开辟、函数返回值、栈帧回退
栈帧:栈帧是一种用于实现函数调用的数据结构,是函数调用涉及信息的记录单元
发表于 2022-03-01 14:47:52 回复(0)
1、分配内存的顺序是按照声明的顺序。 移量是整数倍为止。 2、每个变量相对于起始位置的偏移量必须是该变量类型大小的整数倍,不是整数倍空出内存,直到偏 3、最后整个结构体的大小必须是里面变量类型最大值的整数倍。
发表于 2021-05-08 09:31:19 回复(0)