![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с 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)