ios:发布版本中的EXC_ARM_DA_ALIGN错误

时间:2014-10-08 22:53:43

标签: ios memory-alignment

我的应用程序中有一个函数,用于存储缓冲区中的数据。它在设备和模拟器的调试模式下工作正常,但是当我创建 .ipa并在设备上运行它时,我有EXC_ARM_DA_ALIGN错误libstdc ++。6.dylib std :: string :: _ M_replace_safe(unsigned long,unsigned long,char const ,unsigned long)

struct stMemoryBlock
{
    stMemoryBlock(void* InData, int InSize)
    {
        data        = InData;
        size        = InSize;
        offset      = 0;
    };
    void*           data;
    unsigned int    size;
    unsigned int    offset;
};

// --------------------------------------------- -

char* cDataCollector::TestMemoryThink(char* Buffer, int BufferSize, int TestOffset, int TestSize)
{
    char* result = NULL;

if (TestOffset + TestSize <= BufferSize)
{
    result = &Buffer[TestOffset];
}

return result;
}

// --------------------------------------------- --------

bool cDataCollector::StoreBinaryData(void* DataBuffer, int DataSize)
{
    bool result = false;

char* InBuffer = (char *)DataBuffer;

if (!mPreparedData && !mPreparedDataSize && !mMemoryMap.size())
{
    unsigned int CountElements  = 0;
    int offset                  = sizeof(unsigned int);
    if (DataSize >= sizeof(unsigned int))
    {
//          CountElements   = *(unsigned int*)(&InBuffer[0]);

        memcpy(&CountElements, InBuffer, sizeof(CountElements));
    }

    result = true;

    for (unsigned int i = 0; (i < CountElements) && result; ++i)
    {
        std::string ThinkName ;
        stMemoryBlock * MemoryBlock = NULL;

        result = result && TestMemoryThink(InBuffer, DataSize, offset, 0) != NULL;
        if (result)
        {
            size_t name_think_size = strlen(&InBuffer[offset]);
            char* think_name = TestMemoryThink(InBuffer, DataSize, offset, 0);
            result = result && (think_name != NULL);
            if (result)
            {
                ThinkName   = think_name;
                offset      += (name_think_size + 1);
            }
        }

此行导致错误:

ThinkName = think_name;

也许我需要另一种方法从内存位置读取一个非字(32位)对齐的字符串?请帮忙!

0 个答案:

没有答案