7

私はCが初めてで、 Cで要素だけでなく配列全体を削除できるかどうか疑問に思っています。C++ には がありますが、 Cdelete[]にも似たようなものはありますか?

4

8 に答える 8

7

free動的に割り当てられた配列を削除するために使用できます。

int* array = malloc(10*sizeof(int));
...
free(array);

配列要素ごとにメモリを割り当てた場合は、free最初に各要素にもメモリを割り当てる必要があります。

char** array = malloc(10*sizeof(char*));
for (int i=0; i<10; i++) {
    array[i] = malloc(i);
}
....
for (int i=0; i<10; i++) {
    free(array[i]);
}
free(array);
于 2013-03-08T16:35:00.250 に答える
1

配列を動的に(を使用してmalloc())割り当てた場合は、それを使用free()して割り当てを解除するだけです。そうすると、メモリを「所有」しなくなるため、ポインタにアクセスできなくなります。

于 2013-03-08T16:34:56.937 に答える
0

C ++では、をdelete使用していない限り、を呼び出さないでくださいnew。動的割り当てを使用しなかった場合、メモリを解放しません。

Cでは、アレイの存続期間を制御するかどうかを確認しmallocてください。free

#include <stdlib.h>

int *array = malloc (size_in_bytes);

/* Some stuff. */

free (array); /* When I don't need it anymore. */

それ以外の場合、自動変数は自動的に解放されます。

于 2013-03-08T16:34:37.013 に答える
0

使用した場合malloc()/calloc単に使用する場合free()

type * ptr = malloc(n * sizeof(type));
if(ptr == NULL)
    couldnt_allocate_memory();
/* ... */
free(ptr);
于 2013-03-08T16:34:53.887 に答える
0

Cでは、配列をstatic ex:int a [10]として宣言している場合、削除する必要はありません。関数が終了するか、プログラムが終了すると、解放されます。メモリ割り当て手法[malloc、calloc]のいずれかを使用してメモリを割り当てた場合、メモリは自分で割り当てられるため、自分で解放する必要があります。割り当てられたメモリブロックを解放するには、free(ptr)を使用します。

于 2013-03-08T16:37:50.030 に答える
0

タブの作成: malloc または calloc 関数。そして、それを解放する無料の関数

于 2013-03-08T16:36:15.223 に答える