C/C++中变量的内存分配和收回
// C: who mallocs who frees
// C++: who news who deletes
// C++11: who owns who does nothing
class Bar {
Public:
Bar();
void doSomething() const;
};
void fun1(const Bar& bar) {
bar.doSomething(); // does NOT own bar and can NOT modify bar
}
void fun2(Bar* bar) { // raw pointer => access, no ownership
bar->doSomething();// does NOT own bar but can modify bar including assignment
*bar = Bar();
}
void fun3(std::unique_ptr<Bar> bar) {
bar->doSomething();// owns bar, and it will be automatically deleted when out of scope
}
void foo() {
std::unique_ptr<Bar> bar(new Bar()); //foo owns object bar
fun1(*bar);
fun2(bar.get());
fun3(std::move(bar)); // foo transfers the ownship of bar to fun3
assert(bar == nullptr); // bar no longer exists
}
- 从一个微型例子看“C/C++的内存分配机制”和“数组变量名与指针变量名”
- 探讨C++ 变量生命周期、栈分配方式、类内存布局、Debug和Release程序的区别(二)
- 从一个微型例子看“C/C++的内存分配机制”和“数组变量名与指针变量名”
- 程序员面试(5):c/c++编程时,变量的内存分配情况
- c++ 全局变量的内存分配问题
- C++中的成员变量的内存分配问题
- c++各种类型变量的内存分配
- C++成员变量与函数内存分配
- C++中的变量内存分配方式
- 从一个微型例子看“C/C++的内存分配机制”和“数组变量名与指针变量名”
- c++中函数中变量内存分配以及返回指针、引用类型的思考
- C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题?
- C\C++中结构体变量与结构体指针内存分配问题
- C/C++变量编译时运行时分配内存
- C++变量内存分配及类型修饰符
- 探讨C++ 变量生命周期、栈分配方式、类内存布局、Debug和Release程序的区别(一)
- c++中变量的内存分配问题
- 探讨C++ 变量生命周期、栈分配方式、类内存布局、Debug和Release程序的区别
- C++成员变量与函数内存分配
- 探讨C++ 变量生命周期、栈分配方式、类内存布局、Debug和Release程序的区别(二)