Mat*_*lle 0 c malloc calloc dynamic-memory-allocation
我正在尝试在C中构建一个名为PROCESS的结构,这个结构应该包含进程的ID(id)和等待时间(wt).
typedef struct PROC{
int id;
int wt;
}PROCESS;
PROCESS *pt = NULL;
Run Code Online (Sandbox Code Playgroud)
现在我想像数组一样创建这个结构的一个实例.我想做的是这样的':
PROCESS pt[10];
pt[0].id = 5;
pt[1].id = 7;
Run Code Online (Sandbox Code Playgroud)
但我想用动态内存分配来做到这一点:
pt = calloc(2,sizeof(PROCESS));
pt[0]->id = 5;
Run Code Online (Sandbox Code Playgroud)
我的错是什么?
pt是指向的指针PROCESS,pt[0]是指向的第一个PROCESS对象pt.->访问结构成员的操作符必须仅与指针一起使用,否则使用.
pt[0].id = 5;
Run Code Online (Sandbox Code Playgroud)
会是对的.1
既然你说你在做C,你就不需要施放malloc或者calloc.
PROCESS *pt = calloc(2, sizeof *pt);
if(pt == NULL)
{
// errror handling
// do not continue
}
pt[0].id = 5;
pt[1].id = 7;
Run Code Online (Sandbox Code Playgroud)
另外不要忘记检查返回值,calloc不要忘记以后释放内存free(pt);.
Fotenotes
1请注意,这相当于
pt->id = 5;
Run Code Online (Sandbox Code Playgroud)
但是如果你想设置id第二个元素,你需要这样做
(pt+1)->id = 7;
Run Code Online (Sandbox Code Playgroud)
但我认为这样做更具可读性
pt[1].id = 7;
Run Code Online (Sandbox Code Playgroud)