int* p_numbers = ((int*) malloc (5*sizeof(int)));
+---+---+---+---+---+
p_numbers --> | x | x | x | x | x |
+---+---+---+---+---+
int* temp;
temp = p_numbers;
p_numbers --+ +---+---+---+---+---+
+--> | x | x | x | x | x |
temp--------+ +---+---+---+---+---+
p_numbers
また、メモリリークが発生するため、解放する必要があります。
malloc
また、場合によってはエラーを見つけるのが困難になる可能性があるため、からの戻り値をキャストしないことを習慣にしてください。
説明:
mallocが定義されstdlib.h
ています。そのヘッダーを含めるのを忘れた場合、プロトタイプがない関数のCの方法であるため、malloc
関数はデフォルトで返されると想定されます。int
これで、このようなものがある場合、returnedをにchar*p = (char*)malloc(12);
効果的にキャストするため、問題が発生する可能性があります。明示的にキャストすることで、コンパイラからの警告を無音にします。ハードウェア/ OSがあり、エラーを見つけるのが難しい場合は、次のように記述します。integer
char*
sizeof(char*) != sizeof(int)
p_numbers = malloc(5*sizeof(int))
C ++コンパイラを使用している場合は、new/delete
代わりに使用してください。