У меня есть функция, состоящая из 3 вложенных циклов for и оператора if, внутри нее у меня есть:
int buffsize = valuex*3;
//int buffsize = (LEDS+1)*3;
char buffer[buffsize];
init_buf(buffer, buffsize);
// while(counter <= linecount){
int x = 0;
int y = 0;
char *bufpointer=buffer;
for (x=0; x<=valuex; x++) {
for (y=0;y<=LEDS; y++) {
for (int i=0; i<=linecount; i++) {
if (pixels[i].y==y) {
snprintf(bufpointer+=strlen(bufpointer), buffsize, "%s%d%d%d",buffer, pixels[i].r,pixels[i].g, pixels[i].b );
printf("buffer contents: %s\n",buffer);
}
}
printf("buffer contents: %s\n",buffer); //placed for debugging
}
}
/**************** buffer initialiser ********************/
void init_buf(char *buf, size_t size){
int i;
for(i=0; i<size; i++){
buf[i] = '0'; // int to char conversion
}
}
где bufpointer является указателем на буфер массива символов.
Я пытаюсь прочитать целочисленные значения из структуры пикселей [] и добавить их все в один буфер.
моя проблема в том, что я получаю предупреждение в функции printf о том, что: Thread 1: EXC_BAD_ACCESS(code=EXC_I386_GPFLT)
во время выполнения программа работает до оператора printf и зависает там
snprintf
), чтобы мы могли видеть, как вы выделяете буфер, и подробности о типе указателя буфера и о том, как он используется. Этих двух строк вне контекста недостаточно, но я предполагаю, что вы либо обращаетесь к памяти, которую вы не выделили, либо где-то уходите за конец буфера. - person Ken White   schedule 20.06.2014