LINUX.ORG.RU

Третий день бьюсь над сегфолтом...

 , , , ,


1

4
#include <string.h>
#include <iostream>
using namespace std;
const int ARL=255;
class String{
 char* s[];
 public:
 String(char *s1){
  s=new char[ARL];
  strcpy(s,s1);
 }
 String(){
  cout<<"Введите строку:";
  s=new char[ARL];
  cin>>s;
 }
 ~String(){
  delete[] s;
 }
 int len(){
  for (int i=0;i<ARL;i++)
   if (s[i]==0)
    return i;
  return -1;
 }
 int len(char* s1){
  int l=sizeof(*s1);
  for (int i=0;i<l;i++)
   if (s1[i]==0)
    return i;
  return -1;
 }
 void operator--(){
  int l=this->len();
  int j;
  for(int i=0;i<l;i++){
   ........
  }
 }
..............
};
int main(){
 char* s=new char[255];
 cout<<"Введите начальную строку:"<<endl;
 cin>>s;
 String* s1=new String(s);
 s1->print();
 *s1--;
 s1->print();
...................
 return 0;
}

Первый раз метод len вызывается корректно. При втором - сразу сегфолт. С помощью gdb выяснил, что s почему-то присваивается между этими вызовами адрес 0x21. Где и как - хоть убейте, не пойму. Если s1-- закомментить - не сегфолтится. Пробовал его и со звёздочкой вызывать, и без - результат один и тот же.

Ответ на: комментарий от MiniRoboDancer

Лол. Я в нём лекции набираю. Писк от моих кривых рук весьма доставляет окружающим:D

Если вы в нем лекции набираете, а vim пищит, то руки у вас действительльно из жопы растут. Впрочем эта ветка весьма показательна.

andreyu ★★★★★
()
Ответ на: комментарий от MiniRoboDancer

Основная проблема - раскладка...

Проблема с раскладкой только во голове неосилятора.

И потеря курсора на огромной фреймбуфферной консоли...

И куда же он теряется?

andreyu ★★★★★
()
Ответ на: комментарий от waker

запусти под valgrind'ом.

оверкилл же, судя по тому, что ТС выяснил при помощи gdb :) волгринд его завалит полезной инфой не по теме :)

slackwarrior ★★★★★
()
Ответ на: комментарий от andreyu

Проблема с раскладкой только во голове неосилятора.

Да. Мне просто впадлу настроить нормальный ремап.

И куда же он теряется?

Из виду. В форточках для мышиного курсора есть круги, расходящиеся по нажатию Ctrl, а в консоли-то такого нет. Мигающую полосочку трудно заметить.

MiniRoboDancer ★☆
() автор топика
Ответ на: комментарий от yoghurt

Я в крестики-нолики на парах не играю:)

//Сказал человек со Smalltalk на аватаре.

MiniRoboDancer ★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.