我正在解决一个问题,我有一个"主阵列"指向typedef struct programs
的指针。对于我创建的每个项目/结构,我将内存分配给programs* temp
变量并将其存储到数组programs* master_array[x]
中。
但是,我的问题要求我处理master_array
中的错误,如果program
进入"阻止"状态,然后我必须分别管理那些(那些)过程。
我想创建一个名为programs* blocked_array[y]
的第二个数组,并存储在那里被阻止的程序。在这种情况下,我可以有两个指向同一program
的数组。但是,当我完成处理被阻止的program
时,如何取消分配/取消引用blocked_array[y]
指向该program
的指针,而不会影响master_array[x]
指针?
我是否创建一个空的program temp
,而不是为此temp
程序分配内存,并使blocked_array[y]
指向该temp
程序以有效地清空{{1} }}?
这是否会产生某种意外后果,或者这样做是否会阻止被阻止的数组在保留blocked_array
指针的同时指向它?任何想法都会有所帮助,谢谢。
答案 0 :(得分:1)
您只需在bool isBlocked;
中添加struct programs
字段,然后就可以通过单个数组处理此字段
if(master_array[x]->isBlocked)
{
// Do something
}
else
{
// Do something else
}
或者,您可以使用另一个数组来存储" isBlocked"信息:
bool isBlocked[sizeof master_array / sizeof master_array[0]] = {0};
...
isBlocked[x] = true;
...
if(isBlocked[x])
{
// Do something
}
else
{
// Do something else
}