const array vs static const array in a function

Например, есть функция, которая что-то делает. Как мне объявить и определить массив внутри функции, который я хотел бы выделить/инициализировать только один раз?

void someclass::somefunction(/*parameters here*/)
{
  static const my_array[4] = {1,2,3,4}; // #1
  /*or just*/
  const my_array[4] = {1,2,3,4}; // #2
}

Насколько я знаю, в случае #1 "мой_массив" будет выделен в сегменте данных и инициализирован один раз при первом вызове "somefunction". Но мой коллега высказал предположение, что случай №2 работает аналогично и нет необходимости писать "статическое" ключевое слово.

Поэтому я хотел бы спросить, говорит ли стандарт что-то о случаях #1 и #2 и, если говорит, то что именно? Как я должен определить такой тип массивов, чтобы быть уверенным, что он будет выделен/инициализирован только один раз?

Спасибо.

10
задан fogbit 10 October 2011 в 13:13
поделиться