Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Memory / 5 сообщений из 5, страница 1 из 1
06.06.2005, 00:47
    #33101739
Beginner05
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Memory
Доброго времени суток:

Скажите пожалуйста почему в
Код: plaintext
1.
2.
int lineLen =  5 ; 
char * bufferLine = new char[lineLen]; 
int m = strlen(bufferLine); 
m становится равным 9?
Спасибо!
...
Рейтинг: 0 / 0
06.06.2005, 01:14
    #33101748
Землекоп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Memory
Beginner05Доброго времени суток:

Скажите пожалуйста почему в
Код: plaintext
1.
2.
int lineLen =  5 ; 
char * bufferLine = new char[lineLen]; 
int m = strlen(bufferLine); 
m становится равным 9?
Спасибо!


вданном случае m может быть любым. блок памяти, на который указывает bufferLine, содержит случайные символы после выполнения оператора new. strlen ищет первый нулевой символ, начиная с адреса bufferLine и возвращает количество проверенных ненулевых символов - длину строки. strlen может выходить за пределы аллокированного объекта, если не находит 0.
...
Рейтинг: 0 / 0
06.06.2005, 11:47
    #33102260
Beginner05
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Memory
Спасибо за ответ. Но я проверяю все в отладчике и после комадны memory allocation - New или malloc сразу же добавляются 4 байта. Почему, никак не пойму. Или отладчик тоже по принципу strlen отображает allocated memory. Спасибо.

P.S При выделении 1000 дополнительно 16, при 10000 - 25.
...
Рейтинг: 0 / 0
06.06.2005, 13:02
    #33102454
Землекоп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Memory
Beginner05Спасибо за ответ. Но я проверяю все в отладчике и после комадны memory allocation - New или malloc сразу же добавляются 4 байта. Почему, никак не пойму. Или отладчик тоже по принципу strlen отображает allocated memory. Спасибо.

P.S При выделении 1000 дополнительно 16, при 10000 - 25.

Что именно и как вы проверяете? lstrlen не вычисляет размер объекта. Она просто считает количество символов отличных от нуля в буфере, адрес которого задан в качестве аргумента функции. В принципе, должна выделяться память под размер объекта и это может быть 4 байта.
...
Рейтинг: 0 / 0
06.06.2005, 14:20
    #33102639
Lelikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Memory
Beginner05Спасибо за ответ. Но я проверяю все в отладчике и после комадны memory allocation - New или malloc сразу же добавляются 4 байта. Почему, никак не пойму. Или отладчик тоже по принципу strlen отображает allocated memory. Спасибо.

P.S При выделении 1000 дополнительно 16, при 10000 - 25.

Прально, RTL сохраняет размер выделенной памяти для оператора delete
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Memory / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]