私はCで次のようなことをしています:
void *initialize()
{
my_type *ret = malloc(sizeof(my_type));
return (void*)ret;
}
void test()
{
my_type* ret = (mytype*)initialize();
my_type x = *ret;
}
次の逆参照でクラッシュします。
Received signal 11 (Segmentation fault: 11)
ポインターが null ではありません: ポインターを出力してみましたが、値が得られました。
また、次のように、テスト関数で新しい my_type を作成しようとしました。
my_type* new = malloc(sizeof(my_type));
new と ret の整数表現を出力すると、それらは互いに非常に近い整数です。したがって、これらのことはメモリ内で近くにある必要があります。