首页 \ 问答 \ EXC_ARM_DA_ALIGN崩溃(EXC_ARM_DA_ALIGN crash)

EXC_ARM_DA_ALIGN崩溃(EXC_ARM_DA_ALIGN crash)

我的应用程序中出现EXC_ARM_DA_ALIGN崩溃。 这是Xcode标记为“恶性”的代码。 在模拟器上,我没有这个崩溃,只能在设备上,所以我认为这是一个内存对齐问题。 有没有人知道如何解决这个问题? 非常感谢。

-(int) Save:(void*) pBuf {

int nNeedSize = sizeof(fType) + sizeof(sizeBrush) + sizeof(nBrushType) + sizeof(rcImage) + sizeof(count) + sizeof(data[0]) * count;

if (pBuf == nil)
return nNeedSize;

*(NSInteger*)pBuf = count; pBuf += sizeof(count);
*(BOOL*)pBuf = fType; pBuf += sizeof(fType);
(*(CGSize*)pBuf).width = sizeBrush.width;
(*(CGSize*)pBuf).height = sizeBrush.height;
pBuf += sizeof(sizeBrush);
*(NSInteger*)pBuf = nBrushType; pBuf += sizeof(nBrushType);
(*(CGRect*)pBuf).size.width = rcImage.size.width; 
(*(CGRect*)pBuf).size.height = rcImage.size.height; 
(*(CGRect*)pBuf).origin.x = rcImage.origin.x; 
(*(CGRect*)pBuf).origin.y = rcImage.origin.y; 
pBuf += sizeof(rcImage);

for (int i = 0; i < count; i++)
{
    (*(CGPoint*)pBuf).x = data[i].x;
    (*(CGPoint*)pBuf).y = data[i].y;
    pBuf += sizeof(data[0]);
}

return nNeedSize;}

这是另一个被标记为恶性的部分:

int i;
int nTotalSize = 0;
for (i = 0; i < m_Data.count; i++)
{
    maskStroke* one = [m_Data objectAtIndex:i];
    nTotalSize += [one Save:NULL];
}

unsigned char* buf = (unsigned char*)malloc(nTotalSize+100);
unsigned char* cur_ptr = buf;
for (i = 0; i < m_Data.count; i++)
{
    maskStroke* one = [m_Data objectAtIndex:i];
    cur_ptr += [one Save:cur_ptr];
}

I'm having a EXC_ARM_DA_ALIGN crash in my application. Here's the code that Xcode flag as "malignant". On the simulator I don't have this crash, only on device, so I think it is a memory alignment problem. Is there anyone who knows how to fix this code? Thank you so much.

-(int) Save:(void*) pBuf {

int nNeedSize = sizeof(fType) + sizeof(sizeBrush) + sizeof(nBrushType) + sizeof(rcImage) + sizeof(count) + sizeof(data[0]) * count;

if (pBuf == nil)
return nNeedSize;

*(NSInteger*)pBuf = count; pBuf += sizeof(count);
*(BOOL*)pBuf = fType; pBuf += sizeof(fType);
(*(CGSize*)pBuf).width = sizeBrush.width;
(*(CGSize*)pBuf).height = sizeBrush.height;
pBuf += sizeof(sizeBrush);
*(NSInteger*)pBuf = nBrushType; pBuf += sizeof(nBrushType);
(*(CGRect*)pBuf).size.width = rcImage.size.width; 
(*(CGRect*)pBuf).size.height = rcImage.size.height; 
(*(CGRect*)pBuf).origin.x = rcImage.origin.x; 
(*(CGRect*)pBuf).origin.y = rcImage.origin.y; 
pBuf += sizeof(rcImage);

for (int i = 0; i < count; i++)
{
    (*(CGPoint*)pBuf).x = data[i].x;
    (*(CGPoint*)pBuf).y = data[i].y;
    pBuf += sizeof(data[0]);
}

return nNeedSize;}

And here's another part flagged as malignant:

int i;
int nTotalSize = 0;
for (i = 0; i < m_Data.count; i++)
{
    maskStroke* one = [m_Data objectAtIndex:i];
    nTotalSize += [one Save:NULL];
}

unsigned char* buf = (unsigned char*)malloc(nTotalSize+100);
unsigned char* cur_ptr = buf;
for (i = 0; i < m_Data.count; i++)
{
    maskStroke* one = [m_Data objectAtIndex:i];
    cur_ptr += [one Save:cur_ptr];
}

原文:https://stackoverflow.com/questions/15925287
更新时间:2023-07-10 20:07

最满意答案

链接将帮助您修改注册表。

大多数用于所有文件和文件夹的菜单项都可以在以下其中一个键中找到:

HKEY_CLASSES_ROOT\*\shell    
HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers    
HKEY_CLASSES_ROOT\AllFileSystemObjects\ShellEx

This link will help you to modify registry.

Most of the menu items that used for all files and folders can be found at one of these keys:

HKEY_CLASSES_ROOT\*\shell    
HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers    
HKEY_CLASSES_ROOT\AllFileSystemObjects\ShellEx

相关问答

更多

相关文章

更多

最新问答

更多
  • 获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)
  • 如何通过引用返回对象?(How is returning an object by reference possible?)
  • 矩阵如何存储在内存中?(How are matrices stored in memory?)
  • 每个请求的Java新会话?(Java New Session For Each Request?)
  • css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)
  • 无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)
  • xcode语法颜色编码解释?(xcode syntax color coding explained?)
  • 在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)
  • 从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)
  • 从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))
  • 西安哪有PLC可控制编程的培训
  • 在Entity Framework中选择基类(Select base class in Entity Framework)
  • 在Android中出现错误“数据集和渲染器应该不为null,并且应该具有相同数量的系列”(Error “Dataset and renderer should be not null and should have the same number of series” in Android)
  • 电脑二级VF有什么用
  • Datamapper Ruby如何添加Hook方法(Datamapper Ruby How to add Hook Method)
  • 金华英语角.
  • 手机软件如何制作
  • 用于Android webview中图像保存的上下文菜单(Context Menu for Image Saving in an Android webview)
  • 注意:未定义的偏移量:PHP(Notice: Undefined offset: PHP)
  • 如何读R中的大数据集[复制](How to read large dataset in R [duplicate])
  • Unity 5 Heighmap与地形宽度/地形长度的分辨率关系?(Unity 5 Heighmap Resolution relationship to terrain width / terrain length?)
  • 如何通知PipedOutputStream线程写入最后一个字节的PipedInputStream线程?(How to notify PipedInputStream thread that PipedOutputStream thread has written last byte?)
  • python的访问器方法有哪些
  • DeviceNetworkInformation:哪个是哪个?(DeviceNetworkInformation: Which is which?)
  • 在Ruby中对组合进行排序(Sorting a combination in Ruby)
  • 网站开发的流程?
  • 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
  • 条带格式类型格式模式编号无法正常工作(Stripes format type format pattern number not working properly)
  • 透明度错误IE11(Transparency bug IE11)
  • linux的基本操作命令。。。