Следующий код приводит к ошибке сегментации при попытке повторного использования строки.
for(i=0;i<input_len;i++){
char *loc=(char*)calloc(sizeof(char)*2,0);
int pointer = 0;
while(pointer<3){
int local_index = pointer+i;
sprintf(loc,"%02x",input[local_index]&0xff);
strcat(stream_length_string, loc);
pointer++;
}
local_length = strtol(stream_length_string, NULL, 16);
i=(local_length+8);
loc[0]= 0;
}
Я пытаюсь использовать строку loc на каждой итерации, но на 2-й итерации возникает ошибка сегментации в операторе sprintf. Я предполагаю, что он как-то не может очистить содержимое loc и заполнить его заново.
pointer
,local_index
иi
для каждой итерации и учесть, к какой памяти в результате пытается получить доступ код? Ошибки сегментации связаны с тем, что что-то непривилегированное (ваш код) пытается получить доступ к памяти, принадлежащей чему-то другому (en.wikipedia.org /wiki/Segmentation_fault) - person wally   schedule 05.08.2019calloc(x*2, 0)
— как вы думаете, сколько байтов будет выделено? - person Aconcagua   schedule 05.08.2019loc
NULL
. - person Gerhardh   schedule 05.08.2019free
локируетесь. Почему бы вам не использовать вместо этого локальный массив (char loc[3];
)? - person Aconcagua   schedule 05.08.2019