1

假设我有一个运行多次的函数。该函数包括以下代码:

static int *hello = new int;  

hello只会在第一次运行时分配?

4

3 回答 3

2

是的,它只会分配一次。

但是让我建议你别的。我想你有这样的功能:

int* get_static_hello() {
    static int* value = new int;
    return value;
}

好吧,您可以很好地执行以下操作(它是 100% 正确的):

int* get_static_hello() {
    static int value;
    return &value;
}
于 2013-02-06T01:57:38.903 回答
1

是的,它只会被分配一次。

在函数中使用静态变量时需要注意的事项:

  1. 函数所在的类的所有实例都共享这个变量,它们对所有实例都是相同的,如果它在一个中更改,则对所有实例都更改。

  2. 如果你线程这个类,静态变量的访问将不是线程安全的。

于 2013-02-06T01:57:32.037 回答
-1

好吧,从技术上讲,int 是在程序启动时分配的。调用函数时不会更改。除了变量仅在函数内部可见之外,它与在文件级别声明静态完全相同。

于 2013-02-06T01:57:24.787 回答