添加到动态数组C.

时间:2017-09-28 15:15:44

标签: c arrays dynamic

我知道这可能看起来像一个重复的问题;但我正在寻找的是我的问题的代码特定的答案(而不是推断另一个答案)。我想在c中添加一个动态数组,但是我在分配数组中的最后一个元素时遇到了问题(当我使用gdb时,值首先被赋值给我的数组,但是后来因为没有明显的原因而消失)。这是我的代码:

typedef struct Server {
char* name;
pid_t pid;
} Server;

//global variables
int num_servers;
Server* servers;

//code inside a function and a WHILE loop
resizeArray();
//create struct
Server s = createServer(args[3], id);
//add to array
insertServer(s);
++num_servers;

//code for allocating memory for array
int resizeArray(){
//initialize array if needed
    if( num_servers == 0 ){
        servers = (Server*) malloc(1 * sizeof(Server));
        //TODO check malloc
    }
    //realloc for one more server instance on array
    else{
        servers = realloc(servers, (num_servers+1) * sizeof(Server));
        //TODO check realloc
    }
}

//basically a constructor
Server createServer(char* name, pid_t id){
    Server s;
    s.name = malloc(strlen(name) * sizeof(char));
    strcpy(s.name, name);
    s.pid = id;
    return s;
}

//adds server to array (always last element)
int insertServer(Server serv){
    servers[num_servers - 1] = serv;
    //servers[num_servers - 1].name = serv.name;
    //servers[num_servers - 1].pid = serv.pid;
    return 0; //TODO probably change return type to void
}

然而无论出于何种原因,这段代码实际上并没有使数组中的最后一个元素保持我想要的值(当我调试它时看起来像是分配了内存,但是服务器 - > pid和服务器 - >名称不是我设定的)。任何帮助将不胜感激。

0 个答案:

没有答案