この場合、メモリを解放する正しい方法はどれですか。 2つの方法にはいくつかの違いがありますか? malloc
との両方の割り当てとはfree
でリリースするため関数内の空きメモリ
void allocateArray1(int size, int value)
{
int* arr = malloc(size * sizeof(int));
/* ... */
free(arr);
}
int* allocateArray2(int size, int value)
{
int* arr = malloc(size * sizeof(int));
/* ... */
return arr;
}
int main()
{
int* vector = allocateArray2(5,45);
free(vector);
allocateArray1(5,45);
return 0;
}
明らかに違いがあります。 'allocateArray1()'では、あなたの 'main()'関数は決して配列について知りませんし、何もできません。 'main()'ができないようにするには、このメソッドを使います。 –
'malloc'と' free' *はあなたの*関数がどのように働くか気にしないことに注意してください。彼らが気にするのは、 'malloc 'で割り当てられたメモリは' free'で解放されるということだけです。 – immibis
'main'があなたが割り振ったメモリを混乱させることなく、呼び出された関数の範囲内で確保して自由に使うことができます。 –