线程1:EXC_BAD_ACCESS(代码=1,地址=0x0)问题生成

Thread 1 : EXC_BAD_ACCESS (Code = 1, address = 0x0) issue is generated

本文关键字:0x0 地址 问题 代码 EXC BAD ACCESS 线程      更新时间:2023-10-16

我在Xcode中使用apple LLVM编译器进行C++开发。我初始化char pickbuf变量,并分配所需的内存,我想将值1分配给第二行的代码。但是我得到了一个空指针错误:请帮帮我。

2DCDP4.h

  class CDP : public Const2DCDP{
    struct PICK
        {
            short x;            // Transverse connector
            short y;            // Vertical direction consolidated
            unsigned char x0;   // Transverse reduction limit
            unsigned char y0;   // Longitudinal reduction limit
        } ;
    public:
        char*   pickbuf =new char[1];   // Overlapping buffer allocate some 
        PICK*   pickup =new PICK [1];       // Backtrace buffer
    }
void getProjection(void);
    };

2DCDP4.cpp

#include "2DCDP4.h"
void CDP::getProjection(void){
char    *before=pickbuf;
if( before[(j-1)*di + (i-1)] == 1) //**Thread 1 : EXC_BAD_ACCESS (Code = 1, address = 0x0)**
{
//code 
}
}

您尚未为pickbuf分配任何内存,但尝试访问第2行pickbuf的内存。要解决此问题,请在第2行之前为pickbuf分配一些内存

char pickbuf[n];

char* pickbuf = new char[n];

其中n的大小足以满足您的需要。