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

  • Автор темы Автор темы 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)
 
B) Спасибо за информацию :) ;) ;) ;)
 
Удачи! B)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab