次のように私はC言語で構造体を持って次のようにこれはCのメモリを解放する正しい方法ですか?
typedef struct ArrayStruct{
float * array;
size_t used;
size_t size;
}Array;
は、私はそれを初期化します。
void initArray(Array *a, size_t initialSize) {
a->array = (float *)malloc(initialSize * sizeof(float));
if(a->array){
}
else{
printf("OUT OF MEMORY 1!!\n\r");
}
a->used = 0;
a->size = initialSize;
}
私の質問は:次のコードは、によって利用されているすべてのメモリを解放するための正しい方法です構造体:
void freeArray(Array *a) {
a->array = NULL;
free(a->array);
a->used = 0;
a->size = 0;
}
助けてください。ありがとうございました。あなたは、ポインタが実際にそれを解放する前にNULL
に解放されるように設定されているため:)
後にNULLに設定する必要が働くようにするには、そうではありません。 –
うん。私もそう思いました。しかし、もし私がそうすれば、プログラムは止まる。 :/ –
あなたが表示されない別の問題があります。おそらく、これには[MCVE](http://stackoverflow.com/help/mcve)が必要です。 –