![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
kleks |
|
||||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.10.2005 Репутация: нет Всего: нет |
Вот только начал писать класс для работы с длинными числами, написал конструктор, который на вход принимает строку:
Имеятся и деструктор:
Так вот при компиляции вылетает ошибка...где-то вообщем с памятью напортачил, никак не могу найти ошибку!!! помогите пожалуйста!!! заранее благодарен!!! |
||||
|
|||||
nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 1 Всего: 26 |
kleks, какая ошибка?приведи весь класс целиком.Могу лишь предположить ,что класс деструктор удаляет невыделенную память,иными словами он должен выглядить так :
-------------------- Жизнь - печальная штука. |
|||
|
||||
kleks |
|
||||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.10.2005 Репутация: нет Всего: нет |
А ошибка следующая: HEAP CORRUPTIPN DETECTED: after Normal block (#62) at 0x003327d8 CRT detected that the application wrote to memory after end of heap buffer |
||||
|
|||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
с точки зрения стандарта удаление 0-вого указателя - обычное дело, и не приводит ни к каким проблемам MSVC этому соответствует, BC++Builder, по-моему, тоже (не помню точно, но вроде проверял) -------------------- qqq |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
kleks,
У тебя в классе BigInt есть два указателя, но нет конструктора копирования и оператора присваивания, что может повлечь за собой такие ошибки. Получается, что какой-то экземпляр класса пытается освободить указатель, который уже освобожден другим экземпляром. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
а не проще так
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
kleks |
|
||||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.10.2005 Репутация: нет Всего: нет |
Тоесть написание:
должно помочь...попробую конечно, но разве,действительно, в этом проблема?! |
||||
|
|||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
если идет работа с памятью напрямую (выделение и т д), и не переопределены конструктор копий и оператор присваивания, то да не хочешь мучаться - используй vector, list ...(мой пример выше) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
kleks |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.10.2005 Репутация: нет Всего: нет |
MAKCim,
Спасибо огромное, но всё таки хочется со своим примером разобраться, а отсюда такой вопрос:
Почему в таком виде ф-ия memset() не работает?! И еще, ели есть строка видa char *a="324234234"; каким образом можно освободить память занимаемую этой строкой используя функция delete??? заранее благодарен... |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
потому что a указывает на readonly строку (нельзя писАть) память для не выделяется автоматически (сама строка находится в области константных данных) освобождать эту память вручную не надо -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
kleks |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.10.2005 Репутация: нет Всего: нет |
У меня тут вопрос такого плана: может кто-нибудь писал класс для работы с длинными числами...или возможно где-то, можно скачать соответствующие библиотеки...подскажите пожалуйста?!
![]() |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
в нете полно -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
kleks |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.10.2005 Репутация: нет Всего: нет |
Лазил в интернете и как раз нашёл неплохой класс для работы с длинными числами
![]()
Так выглядит h-файл..., cpp-файл вложен (хотел выложить сразу rar-файл, но форум выдавал ошибку ![]() Присоединённый файл ( Кол-во скачиваний: 3 ) ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |