Я использую компилятор LLVM для разработки на C++ в Xcode. Я инициализирую переменную char pickbuf
и выделяю требуемую память, которую я хочу присвоить значению 1 ко второму коду строки. Но я получаю ошибку с нулевым указателем: пожалуйста, помогите мне.Тема 1: EXC_BAD_ACCESS (Code = 1, address = 0x0) issue genarated
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
}
}
Не могли бы вы найти мой отредактированный код. после выделения памяти, получающей ошибку. Большое спасибо, чувак. –
@RehanK Вы пытаетесь получить доступ к массиву с индексом '(j-1) * di + (i-1)', и он сработает, поэтому '(j-1) * di + (i-1)' дает вам недопустимый индекс (т.е. меньше 0 или больше или равен размеру массива). Используйте отладчик LLVM, чтобы узнать, что '(j-1) * di + (i-1)' оценивает и почему. – emlai
не могли бы вы проверить этот вопрос? Dude http://stackoverflow.com/questions/28832664/thread-1-exc-bad-access-code-2-address-0x8-error-c?noredirect=1# –