通过引用传递时的内存使用情况
Memory usage when passing by reference?
我有一个占用1MB内存的对象(即图像)。我将此图像传递给一个函数,该函数对其进行修改。如果我通过引用将此图像传递到函数中,会复制整个1MB,还是只复制它在内存中的位置?
不只是一个指针-引用只是一个语法奇特的指针,所以它不会吓到孩子。
通过引用传递为对象创建一个别名。唯一使用的内存是为保存别名而分配的堆栈空间。
只有对象的引用位置会传递到堆栈上。
我们在这里很清楚,这只适用于C++。在C中,您总是通过值传递。您可以通过传递指针位置来模拟逐引用传递(如果我没有弄错的话,C++中的引用就是这样工作的)。
通过引用传递时,不会复制对象,只复制对对象的引用。这就是通过引用传递的全部意义。
只有对图像对象的引用被发送到函数,而不是整个图像。
相关文章:
- 任务管理器 - C/C++ 应用程序 - 分配的地址空间与已用内存
- 针对某些特定用例的C++原子内存排序
- 用C++压缩内存中的位图
- 用c++防止内存泄漏
- 内存浪费?如果main()应该只返回0或1,那么为什么main是用int而不是短int甚至char声明的
- 大约"circular reference",我用了weak_ptr但仍然发生内存泄漏
- 你能用内存反序列化字节吗?
- 使用重载的 new 和 delete 运算符跟踪已用内存
- 用C 和Marshall分配给C#的内存
- 当我用clang编译代码时,GCOV会出现内存错误
- 用多个传感器克服Arduino内存限制
- 在闭包中,如何通过存储在内存中的指针或引用类型捕获可变性或用现代函数式语言进行处理?
- CUDA:共享内存的超载以用多个数组实现还原方法
- 我可以动态分配以前分配的内存,但用不同的指针分配
- 从多个线程写入内存区域是否会导致争用?
- 用valgrind分析c++字符内存泄漏
- 为什么用空函数运行std::线程会花费大量内存
- 用new分配4k int后的内存覆盖
- 定义一个C宏并将内存地址设置为用C和C++编写的结构成员
- 除了内存管理,QObject的父级是做什么用的?