Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Куда будет происходить запись?
Форум программистов > Системное программирование > Delphi и Pascal > Delphi - FAQ
Миша
Вот такой код
FillChar(data.FArray,xcells*ycells,0);
Куда произойдет запись xcells*ycells нолей?
Barmutik
Начнёт с Data.FArray ... после того как заполнит размер.. полезет в память... в лучшем случае потрёт значения .. в худшем случае всё упадёт ..

Да и вообще с FillChar надо быть осторожным .. особенно если в структурах есть строки ...
Миша
так, я неправильно выразился, естественно, вы меня неправильно поняли
FArray єто не строка, а указатель на массив
type PBoolArray=^TboolArray;
TBoolArray=array[0..MaxInt-1] of boolean;
Вот так

А вопрос таков
если я напишу вот так
GetMem(Farray,100);
FillChar(FArray,100,0);
и Вот так:
GetMem(Farray,100);
FillChar(FArray^,100,0);
Во втором случае запись будет происходить с начала массива(элемента [0])
А в первом?
Barmutik
Во втором случае вы начинаете заполнять начиная с адреса в переменной FArray

А в первом случае Вы просто потрёте 4 байта указателя FArray и 96 байтов дальше от этой переменной в памяти... последствия сами поинмаете какие будут ..


З.Ы: Оригинальный способ для массива булеанов cool.gif
Миша
smile.gif Спасибо за информацию biggrin.gif biggrin.gif smile.gif smile.gif
Barmutik
Удачи! smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2009 IPS, Inc.