一、程序内存分配
栈:用于维护函数调用的上下文;
堆:容纳应用程序动态分配的内存区域。
如下图Linux进程地址空间分布
Linux下有一个动态链接库映射区用于动态链接库的加载映射,Linux下从0X40000000地址开始分配此区域的空间。
二、调用惯例
调用惯例一般指如下几个方面:
1、函数参数的传递顺序和方式
2、栈的维护方式
3、名字符号的修饰策略
常用调用惯例介绍:
值得注意的是C++返回对象时需要两次拷贝构造函数的调用才能完成对象的返回因此开销很大,为此C++提出返回值优化技术,可以将某些情况下的拷贝减少一次,例如:
obj_a GetOgj()
{
return obj_a();
}