据我所知,static
关键字做了两件事:
因此,在以下情况下使用:
但是,如果变量如此之大,但不需要一直可用,并且在堆中一直保留它会是内存昂贵的呢?
如果我遇到这种情况,我该怎么办?我不确定我是否完全理解static关键字的用途。
答案 0 :(得分:1)
c ++中的static
关键字或多或少与您描述的持久存储有关,但根据具体情况有几个细微差别:
- 全局范围内的静态变量。
- 局部函数范围内的静态变量。
- 静态类成员。
- 静态类方法。
我建议你在一些教程中查看所有这些案例。
我认为您误解的概念点是static
本身与大小相关的存储效率无关。如果需要处理大数据,可以使用动态分配/解除分配(new
/ delete
)来执行此操作。换句话说,这是一个内存管理问题,处理这个问题的各种技术都与构造函数,析构函数,智能指针等有关......
答案 1 :(得分:0)
关键字static
可能会被视为有些“过载”。
以下用法选项都是可行的:
就运行时而言,所有类型的静态变量基本相同。它们都位于程序的数据部分中,并且它们的地址在程序执行期间保持不变。因此,它们之间的唯一区别是在编译期间,在声明范围内:
就运行时而言,所有类型的函数(静态和非静态)基本相同。它们都驻留在程序的代码段中,并且它们的地址在程序执行期间保持不变。因此,它们之间的唯一区别是在编译期间,在声明范围内: