gpt4 book ai didi

c++ - 指针和引用如何保存在内存中

转载 作者:太空宇宙 更新时间:2023-11-04 14:48:09 27 4
gpt4 key购买 nike

考虑这两个文件:

//main1.cpp

int main()
{
int a = 0;
int &b = a;
}

//main2.cpp

int main()
{
int a = 0;
int *b = &a;
}

当我使用 gcc -S 选项编译它并比较 2 个汇编程序输出时,它们是完全相同的输出。那为什么有的书上说引用变量不占用额外内存呢?

最佳答案

引用是否占用内存是不确定的。如果编译器可以确定它引用了哪个对象,那么它可以简单地使用该引用作为该对象的替代“名称”,而不需要任何运行时信息。如果不能,则引用将需要保存其目标地址,就像指针一样。

指针是对象,因此像任何其他对象一样占用内存。然而,“好像”规则下的优化意味着对象只有在程序的行为依赖于它们时才需要占用内存;例如,如果您打印它的地址。因此,如果编译器可以确定指针指向哪个对象,那么它可以将通过指针的间接访问替换为对该对象的直接访问,并可能完全删除指针。

相同的优化规则意味着,在您的两个示例中,所有变量都可以删除,因为它们没有效果。

关于c++ - 指针和引用如何保存在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30376752/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com