在iOS中,我复制内存使用以下代码:
public OverlayView(Context context) {
super(context);
inflate(context, R.layout.overlay_view, this);
}
static WindowManager.LayoutParams createLayoutParams(int height) {
final WindowManager.LayoutParams params =
new WindowManager.LayoutParams(MATCH_PARENT, height, TYPE_SYSTEM_ERROR,
FLAG_NOT_FOCUSABLE
| FLAG_LAYOUT_IN_SCREEN
| FLAG_LAYOUT_NO_LIMITS
| FLAG_NOT_TOUCH_MODAL
| FLAG_LAYOUT_INSET_DECOR
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION
, TRANSLUCENT);
params.gravity = Gravity.TOP;
return params;
}
public int retrieveScreenHeight() {
int result = 0;
WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
Point outSize = new Point();
wm.getDefaultDisplay().getSize(outSize);
if(outSize.y > outSize.x){
result = outSize.y;
}else{
result = outSize.x;
}
return result;
}
其中memcpy(code, oriAddress , 100);
指向文本段(功能的地址)。我的问题是,oriAddress
中的内存与代码中的内存不同。这是怎么发生的?
在arm指令ldrh执行之前,0x2a305ad4指向的值是0xb5f0。但是在执行ldrh之后,r0的值不是0xb5f0。
答案 0 :(得分:0)
这是我的错。我将BreakPoint设置为地址,并且lldb更改地址指向的值。所以值是BreakPoint代码。