распределение памяти для локальной статической и локальной переменной - PullRequest
2 голосов
/ 28 апреля 2011

1.

void main(void)
{
  int *ptr1;
  ptr1 = (int *)malloc(..);
}

2

void main(void)
{
  static int *ptr2;
  ptr2 = (int *)malloc(..);
}

Я хочу спросить, как осуществляется распределение памяти для ptr1 и ptr2?

1 Ответ

10 голосов
/ 28 апреля 2011

Сам указатель ptr1 размещается в стеке. ptr1 указывает на память в куче.

Сам указатель ptr2 выделяется при запуске программы (до вызова main) и является глобальным, но просто виден только в main, поскольку он объявлен в своей области видимости. ptr2 указывает также на память в куче.

Объявление ptr2 за пределами main сделает его видимым только во всех функциях под ним, но его хранилище будет таким же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...