У меня в настоящее время несколько проблем с нарушениями доступа в программе, которую я создаю для своего курса программирования. Он строится на языке pascal (язык, используемый курсом) и использует Lazarus IDE (аналогично Delphi, но открыт).Как избежать ошибок SIGSEGV на компиляторе FPC?
Насколько я знаю, нарушения доступа или ошибки SIGSEGV возникают при попытке использовать или адресовать недопустимую ячейку памяти. Я пробовал многие из них, особенно когда я не объявлял длину динамических массивов.
Теперь кажется, что у меня эта проблема со струнами. (Или, может быть, я могу использовать многомерные массивы).
я вставить только процедуру, где SIGSEGV указывает, но контекст:
У меня есть массив целых чисел и многомерный массив, содержащий это силовой агрегат (subconjuntos), функция где ошибка тулбар (как описано ниже) используется для печати этой мощности установлен в TextBox (индексируется местного):
procedure writeSub(local: TEdit);
var
i, j: integer;
begin
for i:= 0 to High(subconjuntos)+1 do
if Length(subconjuntos[i])>1 then
begin
local.Text:=local.Text+'[';
for j:=0 to High(subconjuntos[i])+1 do local.Text:=local.Text+'('+IntToStr(subconjuntos[i][j])+') ';
local.Text:=local.Text+'] ';
end
else local.Text:=local.Text+'['+IntToStr(subconjuntos[i][0])+'] '; {this is where I'm having the SIGSEG, the program wont compile if I don't reference it without the double brackets}
end;
Любые идеи, почему это бросает SIGSEGV-х?
Я удалил тег Delphi, потому что этот вопрос не применим к Delphi. Delphi не бросает SIGSEGV, не использует FPC и поэтому не имеет никакого отношения к этой проблеме. Также не обязательно включать информацию о тегах в заголовок вопроса; система тегов работает здесь очень хорошо, чтобы классифицировать вопросы и получать их людям, знакомым с этими тегами. –