С Новым годом! Форум программистов, компьютерный форум, киберфорум
Кроссплатфор­менная разработка
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562

Нек понятный вывод.

17.03.2010, 06:54. Показов 1053. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Что такое
*** glibc detected *** /home/student/Documents/Преподаватели/Атавин/Projects/Test/Test: double free or corruption (out): 0x0804d178 ***
======= Backtrace: =========
/lib/libc.so.6[0xb7d65402]
/lib/libc.so.6(cfree+0x89)[0xb7d66a79]
/home/student/Documents/Преподаватели/Атавин/Projects/Test/Test(__gxx_personality_v0+0x1c9)[0x8048f89]
/home/student/Documents/Преподаватели/Атавин/Projects/Test/Test[0x804925c]
/lib/libc.so.6(__libc_start_main+0xdc)[0xb7d1905c]
/home/student/Documents/Преподаватели/Атавин/Projects/Test/Test(__gxx_personality_v0+0x71)[0x8048e31]
======= Memory map: ========
08048000-0804a000 r-xp 00000000 08:05 11486331 /home/student/Documents/Преподаватели/Атавин/Projects/Test/Test
0804a000-0804b000 rwxp 00002000 08:05 11486331 /home/student/Documents/Преподаватели/Атавин/Projects/Test/Test
0804b000-0806c000 rwxp 0804b000 00:00 0 [heap]
b7c00000-b7c21000 rwxp b7c00000 00:00 0
b7c21000-b7d00000 ---p b7c21000 00:00 0
b7d01000-b7d03000 rwxp b7d01000 00:00 0
b7d03000-b7e23000 r-xp 00000000 08:02 458852 /lib/libc-2.5.so
b7e23000-b7e24000 r-xp 0011f000 08:02 458852 /lib/libc-2.5.so
b7e24000-b7e26000 rwxp 00120000 08:02 458852 /lib/libc-2.5.so
b7e26000-b7e29000 rwxp b7e26000 00:00 0
b7e29000-b7e33000 r-xp 00000000 08:02 458928 /lib/libgcc_s.so.1
b7e33000-b7e34000 rwxp 0000a000 08:02 458928 /lib/libgcc_s.so.1
b7e34000-b7f0f000 r-xp 00000000 08:02 116564 /usr/lib/libstdc++.so.6.0.8
b7f0f000-b7f12000 r-xp 000db000 08:02 116564 /usr/lib/libstdc++.so.6.0.8
b7f12000-b7f14000 rwxp 000de000 08:02 116564 /usr/lib/libstdc++.so.6.0.8
b7f14000-b7f1a000 rwxp b7f14000 00:00 0
b7f33000-b7f35000 rwxp b7f33000 00:00 0
b7f35000-b7f36000 r-xp b7f35000 00:00 0 [vdso]
b7f36000-b7f4d000 r-xp 00000000 08:02 458846 /lib/ld-2.5.so
b7f4d000-b7f4f000 rwxp 00016000 08:02 458846 /lib/ld-2.5.so
bfae4000-bfafa000 rw-p bfae4000 00:00 0 [stack]
? Стековый егог? Как с ним бороться?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.03.2010, 06:54
Ответы с готовыми решениями:

[IntelliJ IDEA] Понятный вывод ошибок
Здравствуйте. После работы в Visual Studio привык, что ошибки даются подробно и на русском. Тут же даже на английском нет нормального...

Как сделать понятный вывод в консоль?
using (var request = new HttpRequest()) { friendsId1 =...

Корешки-вершки квадратные, не понятный вывод
В чем проблема собстна? #include <iostream> using namespace std; int main() { setlocale(LC_ALL,...

7
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
17.03.2010, 07:18
Если не ошибаюсь, то ошибка описана в начале - double free or corruption - двойное освобождение памяти, остальное это состояние процесса в момент возникновения ошибки.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
17.03.2010, 07:22  [ТС]
Я для примера мучаю собственную реализацию строк. На txt не смотрите - добавлено, чтоб загрузить.
Вложения
Тип файла: txt String.cpp.txt (4.3 Кб, 17 просмотров)
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
17.03.2010, 07:59  [ТС]
Есть перегруженная функция-оболочка:
C++
1
2
3
4
char * realloc (char *p, unsigned long int n)
{
 return (char *) realloc ((void *) p, n);
}
.

Добавлено через 12 минут
Глюк на
C++
1
TString TString::operator = (char *s);
.

Добавлено через 22 минуты
Так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
//=================================================================================================
class TString
{
//-------------------------------------------------------------------------------------------------
 protected:
//-------------------------------------------------------------------------------------------------
  char              *Data; 
  unsigned long int  Number;
//-------------------------------------------------------------------------------------------------
  void               Clear       (               );
//-------------------------------------------------------------------------------------------------
 public:     
//-------------------------------------------------------------------------------------------------
                     TString     (               );                    
                     TString     (TString &String);                     
//-------------------------------------------------------------------------------------------------
                    ~TString     (               );
//-------------------------------------------------------------------------------------------------
  TString            operator =  (TString &String);                    
  TString            operator =  (char    *String);
//-------------------------------------------------------------------------------------------------                    
  friend                    
  istream           &operator >> (istream &Stream,
                                  TString &String);                               
//-------------------------------------------------------------------------------------------------
  friend                    
  ostream           &operator << (ostream &Stream,
                                  TString &String);                               
//-------------------------------------------------------------------------------------------------
  void               operator += (char     Char  );
//-------------------------------------------------------------------------------------------------
};
//=================================================================================================
void
TString::            Clear       (               )
{
 if (Data)
 {
  free(Data);  
 }
 Data  =null;
 Number=0;
}
//-------------------------------------------------------------------------------------------------
TString::            TString     (               )
{
 Data  =null;
 Number=0;
}
//-------------------------------------------------------------------------------------------------
TString::            TString     (TString &String)
{
 char *p1;
 char *p2;
 if (String.Number)
 {  
  Data=(char*)malloc(String.Number+1);
  if (Data)
  {
   Number=String.Number;
   for (p1=String.Data+Number, p2=Data+Number; p2>=Data; --p1, --p2)
   {
    (*p1)=(*p2);   
   }
  }
  else
  {
   Number=0;
  }
 }
}
//-------------------------------------------------------------------------------------------------
TString::           ~TString     (               )
{
 if (Data)
 {
  free(Data);  
 }
}
//-------------------------------------------------------------------------------------------------
TString
TString::            operator =  (TString &String)
{
 char *p1;
 char *p2;
 if (String.Number)
 {  
  Data=(char*)malloc(String.Number+1);
  if (Data)
  {
   Number=String.Number;
   for (p1=String.Data+Number, p2=Data+Number; p2>=Data; --p1, --p2)
   {
    (*p1)=(*p2);   
   }
  }
  else
  {
   Number=0;
  }
 }
 else
 {
  this->Clear();
 }
 return *this;
}
//-------------------------------------------------------------------------------------------------
TString
TString::            operator =  (char    *String)
{
 return *this;
}
//-------------------------------------------------------------------------------------------------
istream             &operator >> (istream &Stream,
                                  TString &String)
{
 char c;
 String.Clear();
 Stream.putback('\0');
 Stream>>c;
 while (Stream.peek()==0);
 while (Stream.peek()!=10)
 {
  Stream>>c;
  String+=c;
 }
 return Stream;
}
//-------------------------------------------------------------------------------------------------
ostream             &operator << (ostream &Stream,
                                  TString &String)
{
 char *p;
 char *e;
 if (String.Number)
 {
  for (e=String.Data+String.Number, p=String.Data; p<e; ++p)
  {   
   Stream<<(*p);
  }
 }
 return Stream;
}
//-------------------------------------------------------------------------------------------------
void
TString::            operator += (char     Char  )
{
 char              *Buffer;
 unsigned long int  Number;
 if (Char!=0)
 {
  Number=this->Number+2;
  if (Number)
  {
   Buffer=realloc(Data, Number);  
   if (Buffer)
   {
    this->Number                 =Number-1;   
          Data                   =Buffer;         
          Data   [this->Number  ]='\0';
          Data   [this->Number-1]=Char;
   }
  }
 }
}
//=================================================================================================
результат тот же.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
17.03.2010, 08:08
taras atavin, крайне странная реализация.
Могу лишь помочь исходным кодом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
#include <assert.h>
 
class String
{
public:
  String()
  {
    Initialize();
  }
 
  String(const char* str)
  {
    Initialize();
 
    Assign(str);
  }
 
  String(const String& str)
  {
    Initialize();
    
    Assign(str);
  }
 
  ~String()
  {
    delete [] data;
  }
 
  const char& operator[](int n) const
  {
    if(n < 0 || n > (int)lenght)
      throw RangeError("String::operator[]", "Range out of bound");
 
    return *(data + n);
  }
 
  char& operator[](int n)
  {
    if(n < 0 || n > (int)lenght)
      throw RangeError("String::operator[]", "Range out of bound");
 
    return *(data + n);
  }
 
  String& operator=(const char* str)
  {
    return Assign(str);
  }
 
  String& operator=(const String& str)
  {
    return Assign(str);
  }
 
  String& operator+=(char ch)
  {
    return Append(ch);
  }
 
  String& operator+=(const char* str)
  {
    return Append(str);
  }
 
  String& operator+=(const String& str)
  {
    return Append(str);
  }
 
  String operator+(char ch) const
  {
    String result_string(*this);
 
    return result_string += ch;
  }
 
  String operator+(const char* str) const
  {
    String result_string(*this);
 
    return result_string += str;
  }
 
  String operator+(const String& str) const
  {
    String result_string(*this);
 
    return result_string += str;
  }
 
  bool IsEmpty() const
  {
    return lenght == 0;
  }
 
  size_t Lenght() const
  {
    return lenght;
  }
 
  const char* c_str() const
  {
    return data;
  }
 
  int Compare(const char* str) const
  {
    assert(str);
 
    return strcmp(data, str);
  }
 
  int Compare(const String& str) const
  {
    if(this == &str)
      return 0;
 
    return Compare(str.data);
  }
 
  String& Assign(const char* str)
  {
    assert(str);
 
    size_t new_lenght = strlen(str)             ;
    char*  new_data   = new char[new_lenght + 1];
 
    strcpy_s(new_data, new_lenght + 1, str);
 
    delete [] data;
 
    data   = new_data  ;
    lenght = new_lenght;
 
    return *this;
  }
 
  String& Assign(const String& str)
  {
    if(this == &str)
      return *this;
 
    return Assign(str.data);
  }
 
  String& Append(char ch)
  {
    if(ch == '\0')
      return *this;
 
    size_t new_lenght = lenght + 1              ;
    char*  new_data   = new char[new_lenght + 1];
 
    strcpy_s(new_data, new_lenght + 1, data);
 
    new_data[new_lenght - 1] = ch  ;
    new_data[new_lenght    ] = '\0';
 
    delete [] data;
 
    data   = new_data  ;
    lenght = new_lenght;
 
    return *this;
  }
 
  String& Append(const char* str)
  {
    assert(str);
 
    size_t new_lenght = lenght + strlen(str);
    char*  new_data   = new char[new_lenght + 1];
 
    strcpy_s(new_data, new_lenght + 1, data);
    strcat_s(new_data, new_lenght + 1, str );
 
    delete [] data;
 
    data   = new_data  ;
    lenght = new_lenght;
 
    return *this;
  }
 
  String& Append(const String& str)
  {
    return Append(str.data);
  }
 
  void Format(const char* format, ...)
  {
    assert(format);
 
    va_list arg_list;
 
    va_start(arg_list, format);
 
    int   new_lenght = _vscprintf(format, arg_list);
    char* new_data   = new char[new_lenght + 1]    ;
 
    vsprintf_s(new_data, new_lenght + 1, format, arg_list);
  }
 
  void Clear()
  {
    delete [] data;
 
    Initialize();
  }
 
protected:
  void Initialize()
  {
    data  = new char[1];
    *data = '\0'       ;
 
    lenght = 0;
  }
 
protected:
  char*  data  ;
  size_t lenght;
};
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
17.03.2010, 08:11  [ТС]
Лучше помоги сравнить оператор = с оператором +=. += не глючит.
0
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
17.03.2010, 08:26
taras atavin, Мде...
Это ж надо было так банальный класс строки закрутить до умопомрачения...
Code
1
2
TString [COLOR="Red"]&[/COLOR]operator = ([COLOR="#ff0000"]const[/COLOR] TString &String); 
TString [COLOR="#ff0000"]&[/COLOR]operator = ([COLOR="#ff0000"]const[/COLOR] char *String);
ЗЫ.. чем std::string не угодил?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
17.03.2010, 09:19  [ТС]
У меня проблема окзалась в конструкторе копий. Можно закрыть тему.

Добавлено через 1 минуту
Цитата Сообщение от ISergey Посмотреть сообщение
Это ж надо было так банальный класс строки закрутить до умопомрачения...
Он просто переписан с нуля по-еврейски.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.03.2010, 09:19
Помогаю со студенческими работами здесь

HP probook 455 G2 - При просмотре видео через нек. время происходит зависание ноутбука с артефактами
Дорогие форумчане, несколько месяцев бьюсь с этой проблемой. Видео на ютуб, просто просмотр загруженных видео на ноутбуке ведут за...

Определить, является ли периодической последовательностью двоичная запись заданного натурального числа N, т. е. имеет ли она вид аа . а, где а – нек
Определить, является ли периодической последовательностью двоичная запись заданного натурального числа N, т. е. имеет ли она вид аа ... а,...

Не понятный IP на wan-e
День добрый! На роутере со стороны wan обнаружил непонятный поток посмотрел через Torch в графе Dst обнаружил IP 37.57.99.62 но он...

Не понятный амбигус
//================================================================================================= namespace Longs { class...

не понятный редирект
Ребят,помогите разобраться. Joomla 2.5.14 Cайт лежит /home/www/site/ссылка главная загружается,дальше переходишь по ссылке на сайте,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru