我可以使用static关键字只分配一次新内存吗
Can I use the static keyword to only allocate new memory once?
假设我有一个函数运行了多次。该功能包括以下代码:
static int *hello = new int;
hello
是否只在第一次运行时分配?
是的,只分配一次。
但让我给你提个别的建议。我想你有这样的功能:
int* get_static_hello() {
static int* value = new int;
return value;
}
好吧,你可以很好地做以下(这是百分之百正确的):
int* get_static_hello() {
static int value;
return &value;
}
是的,只分配一次。
在函数中使用静态变量时需要注意的事项:
-
函数所在类的所有实例都共享此变量,所有实例的变量都是相同的,如果其中一个实例发生变化,则所有实例都会发生变化。
-
如果对此类进行线程化,则静态变量的访问将不会是线程安全的。
从技术上讲,int是在程序启动时分配的。当函数被调用时,它不会被更改。除了变量仅在函数内部可见之外,它与在文件级别声明静态完全相同。
相关文章:
- 花括号使循环运行一次?
- caffe 可以一次接收一批具有不同分辨率的输入吗?如果是这样,怎么办?
- 我可以一次检查一小堆布尔值吗?
- (C++)如何修改/使用数据结构,以便我们可以一次又一次地使用它们?
- 我可以确保在编译时只创建一次对象吗?
- 是否有一种方法可以在运行时停止循环重复一次不止一次
- 如果BOOL仅从false到true一次,我可以避免锁定布尔
- 最简单的方法使多个指针一次指向同一位置,一次只处理2个位置
- 我如何使一行代码可以选择,但在已经选择过一次后不重新选择
- 仅当捕获组最后一次出现时,才使字符成为可选字符
- 使带有循环的同一线程不会一次又一次地获得相同的互斥锁而不休眠
- 有没有一种技术可以使虚函数在所有派生类中强制重写?
- 有没有一种方法可以使全局函数/静态成员函数一次可呼出
- 是否有一种方法可以使此C 14递归模板在C 17中短
- 如何仅使输出打印一次
- 输入迭代器可以重复读取,而输出迭代器只能写入一次
- 如何使结构一次只存储一个变量?C++
- WSARecv一次可以接收的最大字节数是多少
- Intel MKL一次可以生成多少个随机数?似乎超出了某些限制
- 是否可以每个类只传递一次变量,而不使其成为静态变量