ポインタの 2D 配列の動的メモリ割り当てと削除に非常に混乱しています。
目標は、各セルがリンクされたリストへのポインターを持つ 2D 配列を持つことです。これは私がやっていることであり、エラーは表示されませんが、警告はほとんどありません。
警告:
1)
a value of type queue ** cannot be used to initialize an entity of type queue ***
queue* (**table) = (queue**)malloc(sizeof(queue*)*3);
2)
a value of type queue * cannot be assigned to an entity of type queue **
table[indexI] = (queue*)malloc(sizeof(queue*)*3);
3)
a value of type queue ** cannot be assigned to an entity of type queue ***
if( !(table = allocate()) ) {
コードは次のとおりです。
queue **allocate() {
queue* (**table) = (queue**)malloc(sizeof(queue*)*3);
// Warning #1 at above line
for(.....) {
table[index] = (queue*)malloc(sizeof(queue*)*3);
// Warning #2 at above line.
}
for(I index - 0 to 3) {
for(J index - 0 to 3) {
table[I][J] = NULL;
}
}
return((queue**)table);
}
void deallocate(queue* **table) {
// will handle list deletion
// next deallocate table
for(....) {
free(table[index]);
}
free(table);
}
void
add_list_to_queue(queue ***table) {
// here I create a list of queue type and assign it to
// those cells
}
modify_table() {
queue* (**table) = NULL;
table = allocate();
// Warning #3 at above line
.
.
.
add_list_to_queue(table);
// do de allocation of table, list etc.,
deallocate(table);
}
私はこれらの分野で混乱しています
- ポインターの 2D 配列の宣言が正しいかどうかわかりません
- この 2D 配列のポインターを渡すにはどうすればよいですか