0

独自の実装でポインターを現在の malloc 関数ポインターに変更しようとすると、iPhone シミュレーターで EXC_BAD_ACCESS エラーが発生します。

malloc_zone_t *zone = malloc_default_zone();
zone->malloc = my_malloc;

組み立て:

0x2b73:  movl   $0, %ecx
0x2b78:  leal   -40(%ebp), %edx
0x2b7b:  movl   -92(%ebp), %esi
0x2b7e:  movl   13828(%esi), %edi
0x2b84:  movl   %eax, -76(%ebp)
0x2b87:  movl   -76(%ebp), %eax
0x2b8a:  movl   %edi, 12(%eax) <------ EXC_BAD_ACCESS (code=2, address=0x675100c
0x2b8d:  movl   16836(%esi), %eax
0x2b93:  movl   16588(%esi), %edi
0x2b99:  movl   %eax, (%esp)
0x2b9c:  movl   %edi, 4(%esp)
0x2ba0:  movl   %ecx, -132(%ebp)
0x2ba6:  movl   %edx, -136(%ebp)

バージョンのような単純なフィールドを変更しようとしても、エラーが発生します。

zone->version = 9;
4

2 に答える 2