Форум программистов, компьютерный форум CyberForum.ru

Проблема с классом и массивом char-ов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вылетает ошибка при запуске программы http://www.cyberforum.ru/cpp-beginners/thread15958.html
Написал несложную программу сложения матриц. Скомпилирывал все нормально, ошибок нема. Начинаюца проблемы когда жму "Выполнить" програма запускаеца, нече не успевает сделать как вылетает ошибка, типо "отправить отчет чи не" вот програма: #include <iostream.h> #include <conio.h> #include <math.h> #include <windows.h> int main(){ int n,m,i,j;
C++ Функции времени Подскажите можно ли, и каким способом вернуть из библиотечных функций чисто int значения min sec и hour чтоб присвоить их потом тем же переменным в своем созданом классе и если мона то каким способом. http://www.cyberforum.ru/cpp-beginners/thread15936.html
Классы-друзья (использование данных одного класса из другого) C++
Зарание спс ))) Я лаймер в С++ но учусь чтоб исправиться. И куда как не к вам обращаться за помощью =) в тяжкие дни свои. Проблема с классами, везде написано что для того чтоб мона было юзать данные одного класса из другого досточно просто сделать их друзьями, и тут не получается у меня. (Понимаю что элементарно но подскажите почему переменная (y) не видна из класса X) #include <iostream.h>...
Сортировка вставками C++
Помогите плиз немогу написать программу, незнаю с чего начать и что писать, может у кого что нить завалялось для этой темы, заранее спс Короче, надо разработать программу для реализации алгоритма сортировки выбором. Сортируемую последовательность необходимо генерировать из случайных чисел. Результат представить графически в виде двух наборов вертикальных линий: первый до - сортировки, второй...
C++ Заменить любую группу пробелов одним http://www.cyberforum.ru/cpp-beginners/thread15929.html
помогите пожалуйста с лабой. необходимо сжать строку , заменив любую группу пробелов одним пробелом.Исходную строку и результат вывести на экран. Подпрограмму обработки строки следует оформить в виде функции. Очень признателен за любую помощь(информацию:)).
C++ работа со строками Всем доброго времени суток! Нужна ваша помощь вот с такой задачкой. Я ввожу с клавы какую-нить строку(ну эт я знаю как написать). далее прога должна проверять есть ли в этой строке слова полиндромы(т.е. слово которое с обеих сторон одинаково читается к примеру "дед"). и потом если их окажется несколько(в зависимости от того сколько таких слов я введу с клавы)по нахождению последнего полиндрома... подробнее

Показать сообщение отдельно
master.EXE
111 / 16 / 2
Регистрация: 10.03.2008
Сообщений: 101
14.11.2008, 19:41     Проблема с классом и массивом char-ов
Цитата Сообщение от CheshireCat Посмотреть сообщение
1. Разумеется, если delete[] не закомментированы, будет вылетать с ошибкой сразу же. Чему у тебя равно arr, когда выполняется вход в тело конструктора, ась? Правильно, мусор там лежит.....
2. Почему вылетает при заполнении массива - ставь точку останова и вперед в отладчик! Чему у тебя равны в этот момент a и arr? Причин может быть много, код довольно таки стремный....
Возможно я чего-то не понимаю, но какая разница между тем от чего очищать выделенную память? Есть ли разница от того, лежит ли там мусор или ценные данные? Для машины (если она конечно не высокоинтеллектуальна) никакой разницы. Хотя, в то же время стандарты С++ оговаривают, что нужно использовать операцию delete только с теми переменными, которые были выделены операцией new. Так что, вполне возможно, что дело не в мусоре, который хранится изначально, а в чем-то другом...

Добавлено через 2 минуты 10 секунд
master.EXE
А как правильно он должен выглядеть?
Опять же, смущают вылеты при наличии delete[] в деструкторе.
1) Я думаю, что так:
C++
1
2
3
4
5
CMyString::CMyString(void)
{
    delete[] arr;//удаляется заданный в .h указатель.
    arr= new char[16];//нет параметра  - размер 16
}
2) Смотри, у тебя в разделе private насписано следующее:
C++
1
2
int size;
char* arr; //указатель на массив создается
Т.е. ты создаешь указатель arr, который указывает на тип char. Насколько я помню, стандарт языка С++ гласит, что пользоваться командой delete для указателя можно только тогда, когда память пож этот указатель была преждевременно выделена командой new. В противном случае, ситуация может быть любой.
 
Текущее время: 08:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru