簡體   English   中英

c malloc 在其他 function 和結構中

[英]c malloc in other function and structs

我在使用 c 和指針時遇到問題。 我一直在努力,它必須很容易。 我有一個結構,我分配了一個 function,然后將指針傳回原來的 function。但是當我嘗試用其他變量填充結構的值,然后打印或復制它們時,應用程序段錯誤說 memory地址越界。

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);
}

我分配 memory 對嗎? 分配 memory 這些指針肯定很粗糙,尤其是過去只和 php 搞混。

這是你的問題:

struct memcache_buffer{
    char keys[MAX_KEYS], values[MAX_KEYS]
}

snprintf(buffer->keys[0],KEY_SIZE,"%s",key);
                     ^^^
snprintf(buffer->values[0],VALUE_SIZE,"%s",value);
                       ^^^

刪除[0]snprintf將嘗試取消引用某些虛假值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM