当我尝试使用自己的实现更改指向当前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;
答案 0 :(得分:1)
旧但这是一个答案。 默认区域是写保护的,有关解决方法,请参阅: http://trac.webkit.org/changeset/53362/trunk/WebKitTools/DumpRenderTree/mac
答案 1 :(得分:-1)
据我所知,仅在OS X中使用malloc_default_zone()。您可以在帮助中查看此事实。 所以这个功能可能无法在iPhone上正常工作。