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

Тема в разделе "Delphi - FAQ", создана пользователем -, 26 ноя 2005.

Статус темы:
Закрыта.
  1. Гость

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

    Barmutik Гость

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

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

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

    Barmutik Гость

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

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


    З.Ы: Оригинальный способ для массива булеанов B)
     
  5. Гость

    B) Спасибо за информацию :) ;) ;) ;)
     
  6. Barmutik

    Barmutik Гость

    Удачи! B)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей