关于c++指针和物理内存
regarding c++ pointer and physical memory
我有一个澄清,
class Foo
{
}
main()
{
Foo obj; //1
method(obj);
method1(&obj);
Foo* obj1;
method2(&obj1); //4
}
void method(Foo objfoo) //2
{
}
void method1(Foo* objfoo) //3
{
}
void method2(Foo* & objfoo){}
Q1。它会在主堆栈框架内分配对象吗?
Q2。它会在方法堆栈框架内再创建一个Foo副本吗?
Q3。是否指向主方法中存在的obj中存在的相同对象?
第四季度。这说明了什么?需要解释吗?
这些是按Q1、Q2等排序的,而不是它们在问题中出现的顺序。
- 是的。(至少在存在堆栈帧或堆栈的范围内)
- 是的,至少在理论上是这样(但在现实中,编译器可能会删除副本)
- 是的,method1接收一个指向预先存在的对象的指针
- 它正在将
obj1
的地址传递给method2
旁白:第四季度提到的对method2
的调用实际上不起作用。由于obj1
被定义为指向Foo
的指针,而method2
引用指向Foo的指针,因此不需要(显式)获取点的地址来进行调用。这样做会创建一个指向指针的指针,其中method2
需要对指针的引用。使用method2(obj1);
至少在语法上是正确的(但它是否真的能正确工作还有待商榷)。
Q1:是;
Q4:&
表示"的地址"。取一个指针的地址,可以得到一个指向Foo**
的指针。
Q2:是的。
Q3:是的。
method2
:无效,应为
void method2(Foo** obj);
相关文章:
- 如何在 WSL 2 中读取物理内存?
- 将统一的内存指针传递给内核会减慢程序的速度
- malloc - 运行时内存指针类型分配
- 共享内存指针分段错误
- 静态局部变量没有物理内存
- Linux如何知道过程使用了多少物理内存
- 使用动态分配的内存(指针)
- 与对象一起返回时清除了内存指针
- 在UWP C++项目中,程序集分配的内存指针自动更改为0xffffffff
- 使用注入的 dll 使用内存指针编辑值
- 提升共享内存 - 指针的返回向量
- 评估 C/C++ 内存泄漏时的虚拟与物理内存
- 监视从应用程序写入指定的内存指针从 DLL 接收
- 运算符 new 在大量物理内存可用时引发异常
- std::矢量元素在物理内存中是否连续
- 非分页内存指针
- 关于c++指针和物理内存
- Qt读取内存指针值
- 如何在Windows上直接从物理内存中读取
- 简单的程序帮助-发送动态内存指针到函数