| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Ошибка при освобождении памяти |
| Автор: Lonley 6.11.2007, 18:34 | ||
| ПРИВЕТ ВСЕМ..... У меня в буфере находится некая информация причем строчного формата т.е. для вывода на экран не типа String ----------------------------- далее узнается размер инициализируется массив на данный размер далле выделяется память VirtualAlloc и формируются строки типа Stringв ручную ----------------------------- прописывается адресс строки в массиве И..... ----------------------------- все какбы прекрасно строки выводятся все хорошо, но при выходе из функции динамич массив освобождается тут и начинается проблема ----------------------------- МНЕ конечно понятно что в строках (массива) указаны адреса на мою выделенную память, но собственно какая разница память и память -----------------------------
|
| Автор: bems 6.11.2007, 19:28 |
| у строки кроме самой строки и 4-х байт длины есть еще 4 байта счетчика ссылок и завершающий ноль (для совместимости с PChar). Я в асме не силен, поэтому не могу найти у тебя ошибку. Но вместо ручного создания string ты лучше объяви ее, сделай ей SetLength и скопируй в нее содержимое буффера. И VirtualAlloc не понадобится |
| Автор: Lonley 7.11.2007, 09:24 |
| bems, ----- спасибо будем думать дальше |
| Автор: Rouse_ 7.11.2007, 21:55 |
| Ты забыл вызов _LStrClr |
| Автор: Lonley 8.11.2007, 11:54 |
| Rouse_, поясни... в отладчике она есть я видел....судя по Аббревиатуре очищает строку |
| Автор: Lonley 9.11.2007, 20:33 | ||
| все разобрался.... если правильно сформировать строку то память освобождается без ошибок ------------
------------------------------------- соответственно освбождать память самому не нужно т.к. при выходе из функции программа попытаеться сама освободить память что вызовет ошибку ------------------------------------- bems, +1 |