0

C でヒープ データ構造を作成しています。決定できないことが 1 つあります。配列として実装しています。それが機能する方法は、関数「挿入」がいくつかのデータへのポインターを取り、そのデータのすべてのバイトを配列にコピーすることです。それは良いアプローチですか? または、関数が呼び出されたポインター自体を保存する必要がありますか?

4

2 に答える 2

2

たとえば、スタック上の変数の場合、指しているメモリがおそらく変更されるか、無効になることを考慮する必要があります。そのため、ほとんどの場合、ポインターを格納するだけではお勧めできません。関数 insert() が必要な場合、メモリをコピーする方法はありません - これは遅いですが。memcpy() を使用するのが最善です。これは依然として最速の関数です。

通常、ヒープの設計は少し異なります。必要なサイズのメモリ領域へのポインターを取得するために呼び出す関数 malloc(int size) があります。必要なものは何でもそこに保管できます。

于 2012-11-14T21:18:25.320 に答える
0

挿入されたオブジェクトが malloc/calloc yes で割り当てられている場合は、ポインターを格納する必要があります。特に構造体では、オブジェクトをコピーするとオーバーヘッドが増加する可能性があります。

于 2012-11-14T21:21:19.133 に答える