繁体   English   中英

在iOS模拟器上分配给malloc_default_zone()返回的结构时,EXC_BAD_ACCESS

[英]EXC_BAD_ACCESS when assigning to struct returned by malloc_default_zone() on iOS Simulator

当我尝试使用自己的实现将指针更改为当前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)

即使尝试更改像version这样的简单字段,我也会收到错误消息:

zone->version = 9;

旧的,但是这是一个答案。 默认区域是写保护的,要解决此问题,请参阅: http : //trac.webkit.org/changeset/53362/trunk/WebKitTools/DumpRenderTree/mac

据我所知,malloc_default_zone()仅在OS X中使用。 您可以在帮助中检查此事实。 因此,此功能可能不适用于iPhone。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM