1

私は次のような構造を持っています

 typedef struct {
    void* data;
    int index;
 } Node;

そして、私は次のようないくつかの行を持っています

 Node* node = (Node*)malloc(sizeof(Node));
 enqueue(&list, node);

次に、関数があります:

delete_node(Node* node) {
   free(node->data);
   free(node);
}

を検討してくださいfree(node->data);。がヒープ データへのポインタである場合dataは問題ありませんが、参照である場合は問題があります。どうすればこれに対処できますか?(タグはすでにそれを明白にしていますが、それを強調するために: これは C++ の質問ではありません。)

4

2 に答える 2

0

ポインターがor変数mallocを介して割り当てられたメモリを指しているかどうかを判断する (移植可能な) 方法はありません。呼び出しの結果のみがメンバーに割り当てられるように、コードを設計する必要があります。 staticautodatamalloc

于 2013-05-15T21:41:50.997 に答える