![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте господа, вот назрел вопрос об освобождении памяти занятой типом String.
Код:
в данном примере память выделяется 1) при создании указателя на строку(*) 2) при присвоении строке значения (**) освобождая командой freemem память мы освобождаем указатель на строку, но судя по переменной AllocMemcount - память занятая самой строкой не освобождается, в следствии чего возникают утечки. В общем случае нам неизвестен тип данных хранимых в переменной a. Известен размер для корректного освобождения памяти. Как корректно освободить память занятую string'ом??? |
#2
|
||||
|
||||
![]() Что должна делать строка
Код:
|
#3
|
|||
|
|||
![]() да даже если поставить
Код:
|
#4
|
||||
|
||||
![]() Ну ведь просил подумать прежде чем отвечать. Длина строки проверяется функцией Length, а здесь Sizeof(MyStr) (в 32-битной ОС) всегда 4.
|
#5
|
|||
|
|||
![]() Цитата:
так как же освобождать память? пример в студию плиз... |
#6
|
||||
|
||||
![]() Цитата:
![]() |
#7
|
||||
|
||||
![]() Эх Pilot, торопишься, не даёшь человеку подумать.
![]() |
#8
|
|||
|
|||
![]() Цитата:
|
#9
|
||||
|
||||
![]() Цитата:
![]() |
#10
|
||||
|
||||
![]() Тяжело отвечать не понимая что делается, да и маленький нюанс - начиная с XP, операционка по завершению программы всё почистит.
|
#11
|
||||
|
||||
![]() Может стоит отойти от канонов Дельфи 3 и перейти к более высоким версиям, тогда
Код:
Код:
|
#12
|
||||
|
||||
![]() Код:
|
#13
|
||||
|
||||
![]() или так:
Код:
|
#14
|
|||
|
|||
![]() а чем такой вариант плох?
Код:
ну и освобождение памяти как описано выше... в любом случае, всем спасибо... |
#15
|
||||
|
||||
![]() Цитата:
|