У меня проблемы с c и указатели. Я продолжаю размалывать это, и это должно быть легко. У меня есть структура, и я выделяю одну функцию, а затем возвращаю указатель обратно к исходной функции. Но когда я пытаюсь заполнить значения структуры другими переменными, а затем распечатать их или скопировать, приложение segfaults говорит, что адрес памяти выходит за пределы.c malloc в других функциях и структурах
struct memcache_buffer{
int elements, action;
char keys[MAX_KEYS], values[MAX_KEYS], returns[MAX_KEYS]; //action 0 = delete , 1 = get 2 = set
}memcache_buffer;
struct memcache_buffer* memcache_allocate_buffer(int size){
struct memcache_buffer *buffer;
buffer =malloc(sizeof(struct memcache_buffer));
return buffer;
}
void memcache_set(char * key, char * value){
pthread_t process_t;
struct memcache_buffer *buffer=memcache_allocate_buffer(1);
char keys,values;
buffer->elements = 1;
buffer->action=2;
//printf("crash?\n");
printf("%s %s",key,value);
snprintf(buffer->keys[0],KEY_SIZE,"%s",key);
snprintf(buffer->values[0],VALUE_SIZE,"%s",value);
pthread_create(&process_t,NULL,memcache_process,buffer);
}
Я правильно распределяю память? выделение памяти, и эти указатели обязательно грубые, особенно в прошлом.
Можем ли мы увидеть код, пожалуйста, – Mark
Вы использовали 'valgrind' для отладки утечек памяти? Вы скомпилировали все предупреждения? В какой книге вы читали о программировании на С? Ваш pastebin не является полным кодом, поэтому мы не можем помочь. (Правильны ли «ключ» и «значение»?) –
На какой ложь вы видите segfault? –