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

Скажите пожалуйста почему в
Код: plaintext
1.
2.
int lineLen =  5 ; 
char * bufferLine = new char[lineLen]; 
int m = strlen(bufferLine); 
m становится равным 9?
Спасибо!
...
Рейтинг: 0 / 0
Memory
    #33101748
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Memory
    #33102260
Beginner05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ. Но я проверяю все в отладчике и после комадны memory allocation - New или malloc сразу же добавляются 4 байта. Почему, никак не пойму. Или отладчик тоже по принципу strlen отображает allocated memory. Спасибо.

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

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

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

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

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


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