Куда будет происходить запись?

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Вот такой код
FillChar(data.FArray,xcells*ycells,0);
Куда произойдет запись xcells*ycells нолей?
 
B

Barmutik

Начнёт с Data.FArray ... после того как заполнит размер.. полезет в память... в лучшем случае потрёт значения .. в худшем случае всё упадёт ..

Да и вообще с FillChar надо быть осторожным .. особенно если в структурах есть строки ...
 
G

Guest

так, я неправильно выразился, естественно, вы меня неправильно поняли
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])
А в первом?
 
B

Barmutik

Во втором случае вы начинаете заполнять начиная с адреса в переменной FArray

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


З.Ы: Оригинальный способ для массива булеанов B)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!