массив символов c ((SIGSEGV) (ядро сброшено))

0

У меня проблема в c++ в eclipse ubuntu. Мой код:

string Bi1 [N];
for(int j=1; j<=N;j++){
    char *cstr2 = new char[Bi2[j].length() + 1];
    strcpy(cstr2, Bi2[j].c_str());
    delete [] cstr2;
}

После запуска программа разбилась:... (SIGSEGV) (ядро сбрасывалось)...

В окнах визуальная студия работает нормально.

Спасибо за ответ.

  • 1
    Ваша неудачная визуальная студия сработала. Bi2 [j], скорее всего, недопустимо, когда j == N, и, следовательно, функция длины может ужасно зависать.
Теги:
string

1 ответ

4
Лучший ответ

В C++ массивы начинаются с 0 и заканчиваются на N-1

for(int j=0; j<N;j++){

Возможно, вам придется выполнить аналогичную настройку в другом месте вашего кода.

  • 1
    +1 Предполагая , Bi2 и Bi1 имеют сходную индексацию (и я полагаю , что они делают, тем самым преждевременный повышающего голос), я предполагаю , что это та же самая проблема тиражируется везде , где Bi2 заполняется.
  • 0
    @WhozCraig Если честно, я даже не заметил, что это были разные массивы.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню