EXC_BAD_ACCESS指向我的代码行

时间:2012-03-28 13:14:02

标签: objective-c c xcode compiler-construction arm

我试图知道我做错了什么因为控制台给了我一个EXC_BAD_ACCESS,就在我指向下方的臂线上。 任何指向解决方案的人都可以提供帮助,因为我不明白为什么要给我这个错误。

感谢。

 /*
 * Copyright (c) 1999-2007 Apple Inc. All rights reserved.
 */

#ifndef _OS_OSBYTEORDERARM_H
#define _OS_OSBYTEORDERARM_H

#include <stdint.h>
#include <arm/arch.h> /* for _ARM_ARCH_6 */

 #if !defined(OS_INLINE)
# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
#        define OS_INLINE static inline
# else
 #        define OS_INLINE static __inline__
# endif
#endif

 * Generic byte swapping functions. */

OS_INLINE
uint16_t
 _OSSwapInt16(
  uint16_t        data
  )
 {
  #if defined(__llvm__)
 data = (data << 8 | data >> 8);
#elif defined(_ARM_ARCH_6)
  __asm__ ("rev16 %0, %1\n" : "=l" (data) : "l" (data));   <- This is the line pointed by the compiler

4 个答案:

答案 0 :(得分:1)

您写道:

  

&lt; - 这是编译器指出的行

因此你说在编译期间发生了EXC_BAD_ACCESS。如果编译器在其工作期间抛出了这样的异常,它会抛弃它并让我更好。

答案 1 :(得分:0)

我不确切知道,但我只是想知道错误意味着您正在尝试访问空指针。

答案 2 :(得分:0)

我怀疑问题出在你正在使用的短(16位)数据类型中。为了测试,请尝试32位。

另外,我从未使用过rev16,但我怀疑这是你需要的预期功能。

   uint32_t        data2;
   data2 = data;
   __asm__ ("rev16 %0, %1\n" : "=l" (data2) : "l" (data2));   <- This is the line pointed by

答案 3 :(得分:0)

您正在尝试交换16位整数的字节(或者您正在使用的方法尝试交换16位整数的字节),但整数驻留在您不拥有的内存中。它可能位于NULL地址,也可能位于最近解除分配的地址中。