malloc.c:3574: mremap_chunk: Assertion `((size + offset) & (mp_.pagesize-1)) == 0' failed.

программирование C++

Вылетает прога с такой ошибкой, недавно обновлял g++ и gcc
соответственно вылетает на конструкторе который принимает массив даублов
вот ключевые моменты

Polinom::Polinom(double mas[])
{
this->n=mas[0];
int h=1;
for(int i=0;i<this->n;i++)
{
this->Add(mas[h]);
h++;
}
}
n- колличество элементов. в массиве в 1 элементе хранится размерность, сама функция добавления выглядит так

int Polinom::Add(double number)
{
if(this->n==0)
{
this->k=new double;
this->k[0]=number;
this->n++;
return 0;
}
else
{
this->k=(double *)realloc(this->k,(this->n+1)*sizeof(double));
this->k[this->n]=number;
this->n++;
return 0;
}
}
k- закрытый член класса, указатель

Примечание:
там же проверка стоит, если нет элементов, то мы просто делаем new если более 1 элемента то реаллок
Ответы:
# this->k=(double *)realloc(this->k,(this->n+1)*sizeof(double));
А при первом вызове this->k == 0 ?
Ну еще бы, выделяете память через new, а потом realloc делаете. Либо откажитесь от реаллоков, используйте стандартный контейнер, например. Либо выделяйте память через malloc, но это уже С нотация.


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.