• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

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

Guest

Вот такой код
FillChar(data.FArray,xcells*ycells,0);
Куда произойдет запись xcells*ycells нолей?
 
Начнёт с 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])
А в первом?
 
Во втором случае вы начинаете заполнять начиная с адреса в переменной FArray

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


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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab