静的配列を使用して、バイナリ ヒープに基づいてプライオリティ キューを実装しようとしています (後でリンク リストを使用します。最初に配列でテストしたかっただけです)。
typedef struct n
{
int x;
int y;
int size;
double value;
} node;
node arr[100];
int total = 1;
void insertElement(int x, int y, int size, double value)
{
node n;
n.x = x;
n.y = y;
n.size = size;
n.value = value;
arr[total] = n;
if (total > 1)
insertArrange(total);
total += 1;
}
削除関数では、一番上のノードを返して削除し、ヒープ全体を再配置します。問題は、メモリを解放できないことです。私が使用するとします
free(&arr[1]);
解放されているポインターが割り当てられていないというエラーが発生しています。これは適切な実装方法ですか?メモリの問題に対処するには?
Apple LLVM 4.2 コンパイラで Xcode を使用しています。この全体は、最終的には Objective-C のより大きなプロジェクトに組み込まれますが、現時点では NSMutableArray を使用したくありません。Cで簡単なソリューションが必要です。