【发布时间】:2017-09-13 09:59:43
【问题描述】:
我有一个函数需要将结构初始化为已知的安全状态。以下代码我到目前为止所做的,我认为这不正确或者可能,但是我如何正确地将结构初始化为安全值,因为它需要传递我的代码的其余部分;
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;
或者我应该 malloc(sizeof(foo)) sysON 函数中的所有变量吗?
编辑
当我有超过 4 个以下代码时,它会使我的程序崩溃;
sys->cash[0].denom = 1;
...
sys->cash[4].denom = 1;
我的程序崩溃,我收到以下错误 - * `./vm' 中的错误:munmap_chunk():无效指针:0x0000000000d0c030 * 找出我的问题,正如下面的人所说,我没有分配足够的内存。
【问题讨论】:
-
“正确值”是你定义的概念。所以我们不能告诉你它是否正确。但是,您在分配后初始化它确实做了正确的事情。
-
您需要说明如何调用函数以及如何声明
sys变量,否则没人能回答这个问题。也不清楚“安全值”是什么意思,这是应用程序级别的东西。