Почти каждая строка вашего кода неверна, но большинство ваших ошибок просто заставят вашу программу делать не то, а не взламывать sh полностью. Вот только ошибки, которые делают вашу программу cra sh:
struct position *b;
printf("\nstart: %d \nend: %d\n", (*b).start, (*b).end);
Это, вероятно, приведет к segfault, потому что вы не можете разыменовать неинициализированный указатель.
free(arrayPtr);
while((*b).start<(*b).end){
double x = (sqrt(8*arrayPtr[(*b).start]+1) - 1) / 2; //equation to detect triangular numbers
Это может вызвать segfault, потому что Вы не можете использовать память после того, как освободите ее. Кроме того, последняя строка этого кода, вероятно, будет иметь значение segfault, поскольку вы все еще не инициализировали b
.
(*b).start++;
}
(*b).start=(*b).end;
(*b).end = ((*b).end + (*b).end);
Все эти строки, вероятно, будут иметь значение segfault, поскольку b
все еще не инициализирован.
Честно говоря, вы должны отказаться от продвинутых тем, таких как темы, и постараться понять основы C.