首页 > 编程语言 >从汇编看C++函数返回对象

从汇编看C++函数返回对象

时间:2022-09-23 00:22:41浏览次数:50  
标签:汇编 gcc 函数 int C++ getTest Test msvc sa

同样的代码,在msvc和gcc里面实现不同。

struct Test {
int a;
int b;
int c;
int d;
~Test(){
std::cout << "end" << std::endl;
}
};
Test getTest() {
Test sa;
sa.a = 1;
sa.b = 2;
sa.c = 3;
sa.d = 4;
return sa;
}
int main() {
Test t = getTest();
t.a = 2;
return 0;
}
gcc, 里面会把Test t当作参数rdi传入getTest().
而msvc会在Test t = getTest();这句话的时候,把getTest()frame[rbp于rsp]里面的数据复制到t所在的stack。
所以gcc只会打印一次end
而msvc会打印2次。

标签:汇编,gcc,函数,int,C++,getTest,Test,msvc,sa
From: https://www.cnblogs.com/robsann/p/16721321.html

相关文章