calloc()
以下のコードを使用して、割り当てられたメモリの最初の2/4バイトにサイズを格納することにより、割り当てられたヒープメモリのトレースを保持できるようにラッパーを作成しようとしています。私がこれだけをテストしたとき、それは大丈夫のようです。しかし、これをシステムとして置き換えると、問題が発生します。多くのヒープが利用可能であっても、場合によってcalloc()
は返されることを意味します。NULL
IARコンパイラを使用してARMボードでこれを実行しています。
void *MyCalloc(size_t size) {
size_t new_size = ((size + 3) & ~0x3);
size_t *result = calloc(1,new_size + sizeof(size_t));
if ( result ) {
printf("MyCalloc addr: %p\n", result);
*result = (new_size + sizeof(size_t));
result = result + sizeof(size_t);
}
return result;
}
これが問題を引き起こしている理由は何ですか?