C ++ Проблема выделения памяти - PullRequest
5 голосов
/ 04 марта 2012

Мой код похож на ниже:

#include <string.h>
int main()
{
    int ii = 123;
    char str[7] = "";
    strcpy(str,"123456");
    return 0;
}

Я запускаю это в VS2010, память как ниже

enter image description here

Мне любопытно, для чего используется cc в памяти? А как рассчитывается число cc?

Ответы [ 2 ]

7 голосов
/ 04 марта 2012

При компиляции для «Debug» в Visual Studio cc часто используются для заполнения неинициализированной памяти.Таким образом, это становится более очевидным при доступе к неинициализированной памяти.

Например, если вы попытаетесь разыменовать неинициализированный указатель, вы, вероятно, получите что-то вроде:

Access Violation accessing 0xcccccccc

или что-то в этом роде..

enter image description here

1 голос
/ 04 марта 2012

Когда вы обращаетесь к неинициализированному пространству памяти, VC2010 всегда предупреждает вас, что вы получили доступ к некоторому адресу, содержащему 0xcccccccc,

0xcc - значение, используемое компилятором (в отладочной сборке)заполнить неинициализированную память.

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