存储空间管理是 C++ 中的重要内容。很多错误也都和内存管理有关。
std::cout << "This is a string" << std::endl;
所谓静态(static),是说在编译的时候已经将内存分配好了。
每个程序都有一个对应的数据区。编译器把静态变量就存放在这个数据区中的固定位置。因而静态数据的存储地址在程序运行过程中是固定不变的。除了用 "static" 显示声明的变量,常量字符串(比如上面例子中的 "This is a string")也可以看作是匿名的静态变量。
TODO
new 在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。
常见的形式如 new Object();
。
有时我们会看到下面”奇怪“的用法
class A; A a, b; new (&a) b; // 相当于 a->A::A(b);
上面的用法其实是省略了空间分配的步骤,在指定地址上通过拷贝构造函数初始化一个对象。
delete 负责释放 new 分配的内存。