Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.64
xecu91
3 / 3 / 0
Регистрация: 09.01.2012
Сообщений: 28
#1

glibc detected - C++

09.01.2012, 19:29. Просмотров 3593. Ответов 20
Метки нет (Все метки)

Хочется узнать, что конкретно означает эта ошибка (glibc detected). Где-то я на забугорных форумах читал, что она возникает при удалении объектов в динамической памяти, в которых лежит всякий неинициализированный мусор. То есть, ожидаемый результат выполнения кода
C++
1
2
3
4
5
6
7
8
9
10
#include <stdlib.h>
int main()
{
    double *a;
    const int n = 10;
    a = new double[n];
    a[0] = a[-1];       //a[0] is now unitialized rubbish
    delete [] a;        //program will crash here
    return 0;           //program must never reach this point
}
есть ошибка glibc, однако почему-то программа корректно завершает работу, несмотря на то, что в a[-1] действительно лежит мусор (1.34322453e-312)

upd: Вообще было бы круто увидеть простейший пример кода, который инициирует эту ошибку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2012, 19:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос glibc detected (C++):

heap corruption detected - C++
имеется класс CStr - строка, в нём есть конструктор CStr CStr::CStr(char *s) { length = 0; while (s) length++; str = new...

Error detected (LME286) - C++
Ребят, слез с Dev-C++ на XE2: #include &lt;iostream&gt; using namespace std; void square(int x, int &amp;result) { result = x*x;...

Heap Corruption Detected - C++
Выдает ошибку HEAP CORRUPTION DETECTED, судя по всему где то ошиблась с распределением памяти Предполагаю, что ошибка прячется в районе...

Heap corruption detected - C++
Возникает эта ошибка при выполнении функции Strings::Append (строка 81, в меню это пункт 3). Входные данные на всякий случай прикрепила....

Heap corruption detected - C++
При попытке очистить память выдает &quot;Heap corruption detected&quot;. Помогите пожалуйста( // labanext.cpp : Defines the entry point for the...

Heap corruption detected - C++
Heap corruption на строке 93 при первом же выполнении цикла. Из-за чего? #include &lt;locale.h&gt; // для возможности вывода кириллицы ...

20
Evg
10.01.2012, 12:08     glibc detected
  #16

Не по теме:

Цитата Сообщение от fasked Посмотреть сообщение
glibc обнаружил(а)
Скорее как "обнаружено glibc'ёй"

0
nxnx
10.01.2012, 12:10
  #17

Не по теме:

а у меня ассоциируется с
achtung detected!

0
fasked
10.01.2012, 12:11
  #18

Не по теме:

Цитата Сообщение от Evg Посмотреть сообщение
Скорее как "обнаружено glibc'ёй"
Это если литературно переводить

0
xecu91
3 / 3 / 0
Регистрация: 09.01.2012
Сообщений: 28
10.01.2012, 16:03  [ТС] #19
В примере Evg действительно invalid pointer, так как под указатель, который пытаемся удалить, ничего не выделялось, и вот glibc'ёй (c) и было обнаружен invalid memory. В моём случае glibc обнаруживает double free or corroption. Как инициировать double free - понятно.
C++
1
2
3
4
5
6
7
8
9
#include <stdlib.h>
int main()
{
     double *a;
     a = new double [2];
     delete [] a;
     delete [] a;     // glibc detected double free
     return 0;
}
А как инициировать corruption - непонятно.
0
Evg
Эксперт CАвтор FAQ
18370 / 6417 / 441
Регистрация: 30.03.2009
Сообщений: 17,803
Записей в блоге: 28
10.01.2012, 16:26 #20
Вот тебе исходники от glibc'шного malloc'а: тыц. Вот ссылка на каталог, где лежит malloc: тыц. Ищешь слово "corrupted", и куришь исходники на предмет того, как это получить.

Для чистоты эксперимента можно заёти сюда, выбрать именно твою версию glibc, далее тыкаешь, например, в "glibc-2.12.2", далее в "tree", дадее выбираешь каталог malloc, в нём файл malloc.c и тыкаешь в "raw"

Добавлено через 1 минуту
Цитата Сообщение от xecu91 Посмотреть сообщение
А как инициировать corruption - непонятно
В моём случае по сути и было corruption. Либо переписывай таким образом:

C
1
2
3
4
5
6
7
8
9
10
11
#include <stdlib.h>
 
int main (void)
{
  int *p;
  
  p = malloc (100);
  *(p-1) = 0;
  free (p);
  return 0;
}
принципиальной разницы нет
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
10.01.2012, 21:37 #21
*** glibc detected *** ./qr: double free or corruption (fasttop): 0x08629108 ***
Это обозначает что библиотека glibc обнаружила ошибку
Конкретнее: двойной вызов free() на одну и туже область памяти
Или повреждение кучи

Я помню время когда glibc в Linux нифига не обнаруживал ошибку типа double free
а FreeBSD это делает уже давно
0
10.01.2012, 21:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2012, 21:37
Привет! Вот еще темы с ответами:

Heap Corruption detected ( - C++
что не правильно? запускаю и ошибка вылетает как на предидущей картинке template&lt;typename TT&gt; class Matrix { public:...

Heap corruption detected - C++
Ошибка возникает после отработки программы Заголовочный файл: #pragma once #include&lt;iostream&gt; #include&lt;valarray&gt; ...

Heap corruption detected - C++
Добрый день! Проблема вот в чём: когда выполнение кода доходит до 163 строки, появляется ошибка: &quot; HEAP CORRUPTION DETECTED: after Normal...

HEAP CORRUPTION DETECTED - C++
Собственно такую ошибку выдаёт: &quot;HEAP CORRUPTION DETECTED: after Normal block (#220) at 0x001970B8. CRT detected that the application...


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.