0

我正在尝试为具有灵活数组成员的结构编写分配函数。我实现它如下:

int ns_request_character(char *char_out){
     //returns 0 on success, -1 on error
}

struct ns_fam{
    size_t size;
    char data[];
};

struct ns_fam * ns_allocate(size_t size){
    char data[size];
    for(size_t i = 0; i < size; i++){
        char char_out;
        if(ns_request_character(&char_out) == -1){
            return NULL;
        }
        data[i] = char_out;
    }
    struct ns_fam *ns_fam = malloc(sizeof(*ns_fam) + sizeof(char[size]));
    if(ns_fam){
        ns_fam->size = size;
        memcpy(ns_fam->data, data, sizeof(data));  // <-- ???
    }
    return ns_fam;
}

我不确定的是将堆栈可变长度数组的内存复制到灵活数组成员。我这样做是为了避免在返回时处理free结构。ns_request_character-1

4

0 回答 0