C-如何将结构初始化为安全值



i具有一个函数,需要将结构初始化为已知的安全状态。以下代码到目前为止我所做的事情,我认为这是不正确的,或者也许,但是我该如何正确地将结构置于安全值,因为它需要围绕我的其余代码传递;

Boolean sysON(FooSystem * sys) {
    List * list = malloc(sizeof(list));
    sys->cash[0].denom = 1;
    sys->cash[1].denom = 1;
    sys->cash[2].denom = 1;
    sys->cash[3].denom = 1;
    sys->cash[4].denom = 1;
    ...
    sys->list = list;
    sys->stockFileName = "bar.dat";
    return FALSE;
} 

结构是;

typedef struct Foo_system {
    Coin cash[8];
    List * list;
    const char * coinFileName;
} FooSystem;

还是我应该是syson函数中所有变量的malloc(sizeof(foo))?

编辑

当我有以下代码中的4个以上时,它会崩溃我的程序;

  sys->cash[0].denom = 1;
  ...
  sys->cash[4].denom = 1;

我的程序崩溃,我收到以下错误 - *错误中的错误:./vm':munmap_chunk():无效指针:0x00000000000000D0C030 * 发现我的问题是什么,正如人们在下面所说的那样,我没有分配足够的记忆。

在您的代码中, list是类型List *的变量。对于指向List类型的指针,所需的内存是类型List的大小,而不是指针到List

所以,问题是

    malloc(sizeof(list));

分配的内存比预期的要少。您需要

    malloc(sizeof *list); // same as malloc(sizeof(List));

相关内容

  • 没有找到相关文章

最新更新