没有大的区别,都是先压入函数的参数,然后是现场,最后是函数内部的自动变量。
微小的区别在于,执行c++的成员函数时,压入的参数中会多加一个类实例的this指针。
这不是语言标准规定的,是编译器的具体实现决定的。比如VC的Debug/Release开关编译的程序开辟函数栈的行为是有不同的。Release版是看函数内有多少变量,需要多少空间就开辟多少空间,而Debug版开辟的空间要大一些,并全部以0xcccccccc填充,以避免缓冲区溢出,保护函数栈。
其他的C编译器和C++编译器没用过,不知道他们的行为是怎样,不过应该区别不大,都是为一个嵌套的函数开辟一个内存地址更低处的栈帧。
这应该跟系统和环境,还有编译器有关吧。