C/C++ 编程中的内存管理、负数组索引与指针技巧
1. 内存分配方式
在 C++ 编程中,常见的内存分配方式有两种:栈上分配和堆上分配。
1.1 栈上分配对象
栈上分配对象是一种简单且高效的方式。以下是示例代码:
void f()
{
...
Class o = Class(...);
...
};
在栈上分配对象时,使用简单的栈指针(SP)偏移来分配内存。当函数退出时,更准确地说,在作用域结束时,栈指针会恢复到函数开始时的状态,同时会调用对象的析构函数。C 语言中分配的结构体内存也是以同样的方式在函数退出时释放。
1.2 堆上分配对象
堆上分配对象则需要使用 new 和 delete 操作符。示例代码如下:
void f1()
{
...
Class *o = new Class(...);
...
};
void f2()
{
...
delete o;
...
};
在 C++ 中, new 实际上是 malloc() 的包装, delete 是 free() 的包装。由于内存块是在堆上分配的,因此必须显式地使用 delete
超级会员免费看
订阅专栏 解锁全文
140

被折叠的 条评论
为什么被折叠?



