动态内存与全局变量相当吗
Is dynamic memory comparable to global variables?
在链表中,我们这样声明node
:
struct node
{
int data; // Data part
struct node* next; // pointer to next node
node(int key)
{
data = key;
next = NULL;
}
};
我们的插入函数看起来像这个
void insert(int key)
{
struct node* go = head; // Head is global.
while(go != NULL)
{
go = go -> next;
}
go -> next = new node(key);
}
如果函数insert
实际上返回void
,那么它如何能够对链表进行更改?
操作员new
(从空闲存储)分配的内存是否像全局变量一样?
new不像全局变量。在C++中,全局变量(假设您不是在谈论全局指针)是在应用程序入口点(即"main")被调用之前分配的,并在应用程序关闭时解除分配。
另一方面,new在调用时分配新内存,在调用delete 时解除分配
MyClass* c = new MyClass(); // Allocate
// ..
delete c; // Deallocate, MyClass c is deleted
所以,如果你用new创建了一些对象,永远不要删除它。它会一直存在,但你可能会丢失指向分配数据的指针,从而导致内存泄漏。
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 当vector是tje全局变量时,c++中vector的内存管理
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 内联函数中具有内部链接的全局变量
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 全局变量 多读取器 一个写入器多线程安全?
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 不同作用域中的静态变量和全局变量
- C++:类如何将自身加载到内存中以递增全局变量?
- 为什么C 全局变量不影响程序的内存使用情况
- C 全局对象变量内存释放
- 其中,存储在内存段中的全局变量和静态变量
- 全局变量的内存布局
- 强制两个线程直接访问内存中的全局变量
- 动态内存与全局变量相当吗
- c++中静态变量和全局变量在内存管理方面的区别
- 将声明一个全局变量时,做递归内存效率和速度更快
- DLL的全局变量存储在内存中
- C++中的全局变量内存分配
- c程序的内存布局,关于局部变量和全局变量的位置