Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Использование функции NEW или вопрос про динамическую память

8.6K
05 октября 2006 года
DeadLOL
22 / / 27.09.2005
в цикле
............
char *test = new char;
cout<<strlen(test)<<" --- "<<i<<"\n";
i=0;
...........
что получаеться

38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
67 --- 63
67 --- 63
67 --- 63
67 --- 63
67 --- 63
67 --- 63
67 --- 63
67 --- 63
67 --- 63
67 --- 63
67 --- 63
67 --- 63
33 --- 29
Press any key to continue


и тут у меня возникает законамерный вопрос если I=4 то почему размер выделеной памяти= 8????? и каждый новый на 4 байта больше???? ведь чар =1 байт. Заранее благодарен за пояснения. Если у кого есть материалы по этой теме прошу поделаться
309
05 октября 2006 года
el scorpio
1.1K / / 19.09.2006
Дело в том, что strlen(test) показывает не размер массива, а "длину" строки - то есть, число байт до нулевого символа. А так как new не производит обнуление выделенной памяти для объектов, не имеющих конструкторов, то символьный массив содержит случайные значения, посему "длина строки" будет произвольной - до первого встречного нуля :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог