Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.29;
Скачать: CL | DM;

Вниз

PChar   Найти похожие ветки 

 
unfam ©   (2002-08-19 03:11) [0]

Здравствуйте, объясните пожалуйста мне, дурню, почему, когда я присваиваю размещенной переменной типа PChar некое строковое значение, последующий вызов FreeMem сообщает об "Invalid pointer operation". Без оного все нормально.

var
Cnt:Integer;
StrSrc:PChar;
begin
Cnt:=Length("бла-бла");
GetMem(StrSrc,Cnt);
StrSrc:="бла-бла";
FreeMem(StrSrc);
end;

Пробовал с StrAlloc(StrNew) - StrDispose. Результат тот же.


 
Suntechnic ©   (2002-08-19 03:28) [1]

Если нормальным русским языком написать, то ты делаешь примерно следующее.
StrSrc:PChar;
Создал указатель на строку.
GetMem(StrSrc,Cnt);
Разместил по этому указателю память рамером 7 байт. Теперь твой указатель указывает на эту область памяти.
StrSrc:="бла-бла";
Теперь ты говоришь указателю: дорогой указатель, ты теперь указываешь не на область памяти которую я тебе только что выделил, а на строковый литерал "бла-бла" который был размещён компилятором где-то в памяти и по своей сути является константой.
FreeMem(StrSrc);
А теперь ты говоришь, а грохни ко мне память по тому адресу, где находится этот константный строковой литерал.

Ну и финал: программа естественно матерится, а кому бы это понравилось?


 
unfam ©   (2002-08-19 03:37) [2]

Спасибо :)


 
Юрий Зотов ©   (2002-08-19 09:09) [3]

Еще один нюансец. Памяти надо выделять на 1 байт больше, чем длина будущей строки - ведь завершающий ноль тоже должен где-то поместиться.



Страницы: 1 вся ветка

Текущий архив: 2002.08.29;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
14-95957
artgamer
2002-08-03 13:20
2002.08.29
Как настроить IPX? (В продолжение вчерашней темы)


8-95914
Max79
2002-04-20 21:17
2002.08.29
Как узнать какой цвет графического изображения под мышкой???


1-95753
кондратий
2002-08-19 10:47
2002.08.29
DLL / Units


1-95882
Андрусь
2002-08-13 20:34
2002.08.29
Помогите разобраться


1-95862
^Sanya
2002-08-16 23:02
2002.08.29
Little Question: Правда, что в ini больше 64Кб не похранишь?