Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с FreeMem


Psychedelic ©   (2006-12-22 01:37:00) 

Всем привет.
Раньше делал так, теперь что -то в KOL не получается.

TLSAUnicodeString = packed record
   Length : WORD;
   MaximumLength : WORD;
   Buffer : PWideChar
 end;


KeyName: TLSAUnicodeString;

Выделяем память -

KeyName.Length:=30;
KeyName.Buffer:=AllocMem(KeyName.Length); (или GetMEM)
// выделяет ок.

FreeMem (KeyName.Buffer) ; А вот здесь AV



В чем дело? Пробовал FreeMem с указанием размера, FreeMemory втч..    Хотя KOL использует API,  пробовал API - GlobalAlloc (фиксированная) - GlobalFree - освобождает , но возвращает почему то 3 (должен 0).
Включил UseDelphiMemoryManager - работает без AV, но можно ли мне без него обойтись (и неизвестно работает ли он правильно)???


Psychedelic   (2006-12-23 19:07:00) [1]

Ну уж вы тоже поспешили с выводом .


Vladimir Kladov   (2006-12-23 18:08:00) [2]

Поспешишь... (как там дальше-то?)


Psychedelic   (2006-12-23 18:00:00) [3]

Упс, понял. Тут же NULL wide character, ему еще пару байт надо... :)
Поэтому и глючило...


Psychedelic   (2006-12-23 17:40:00) [4]

Та же лажа.

var str: string;

str:='asd';

   KeyName.Length:= Length(str) * SizeOf(WideChar);
   KeyName.Buffer:=AllocMem(KeyName.Length);
   StringToWideChar(str,KeyName.Buffer, KeyName.Length);

   FreeMem(KeyName.Buffer); // AV



Это с заменой сис модулей. :(


Psychedelic   (2006-12-23 17:07:00) [5]

Блин с этой работой забыл добавить... При замене сис модулей такое происходит. Это раз. И второе. Это моя ошибка.. :)
в StringToWideChar в destSize добавлял один лишний байт (откуда я это взял??). Сорри за ахтунг.


Psychedelic   (2006-12-23 16:06:00) [6]

Чем прикалываться, объяснил бы человеку, что Sizeof( WideChar ) = 2 байтам.

К чему это Кладов, может объясните?


Vladimir Kladov   (2006-12-22 20:57:00) [7]

Чем прикалываться, объяснил бы человеку, что Sizeof( WideChar ) = 2 байтам.


MTsv DN   (2006-12-22 10:15:00) [8]

> FreeMem (KeyName.Buffer) ; А вот здесь AV
А у меня нет :( (D7SE, WinXPSP2, KOL)


Наверх

Титульная страница Поиск, карта сайта Написать письмо