動的に割り当てられた配列の長さを、それらを操作する関数に渡すのが一般的な規則であることを私は知っています。
void initializeAndFree(int* anArray, size_t length);
int main(){
size_t arrayLength = 0;
scanf("%d", &arrayLength);
int* myArray = (int*)malloc(sizeof(int)*arrayLength);
initializeAndFree(myArray, arrayLength);
}
void initializeAndFree(int* anArray, size_t length){
int i = 0;
for (i = 0; i < length; i++) {
anArray[i] = 0;
}
free(anArray);
}
しかし、ポインターから割り当てられたメモリの長さを取得する方法がないfree()
場合、与えているのがまったく同じポインターである場合、どのようにして割り当てを解除するかを「自動的に」知ることができますか? C プログラマーとして、なぜ魔法に乗れないのですか?
free()
無料の (har-har) 知識はどこから得られますか?