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

Выделение динамической памяти C++ - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.94
owned
2 / 2 / 0
Регистрация: 25.11.2012
Сообщений: 76
27.11.2012, 01:33     Выделение динамической памяти C++ #1
Всем доброго времени суток. Вот столкнулся с проблемой и пока что не приходит ничего интересного по поводу её решения. есть у меня метод, который выделяет память + 1 в зависимости от введённого размера пользователем, а т.е в классе метод для выделения, а в воде cin с вопросом введите длину строку. например он ввёл размерность 5, метод выделяет ещё + 1 (для \0) а потом вызывается метод ввода строки, если он введёт большее кол-во символов в строке, то вылет. как осуществить проверку? например он ввёл размерность 5, а ввёл 7 и ему выводилось на экран заново cin>> размерность и строка. Вот сам код. Help:

методы:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
String(int i)
    {
        string = new char[i + 1];
    }
    String(char * s)
    {
        strcpy(string, s);
    }
    ~String()
    {
        delete [] string;
    }
    void Initialization()
    {
        cout<<"Введите строку: ";
        gets(string);
        char * buffer;
        buffer = gets(string);
        cout<<endl;
 
        ChoiseShowString();
    }
воид:

C++
1
2
3
4
5
6
7
8
9
10
11
else if(punkt == 2) 
            {
                system("title String произв. размера");
                system("mode con cols=43 lines=30");
                int c;
                cout<<"Введите размер символьного массива: ";
                cin>>c;
                cout<<endl;
                String b(c);
                b.Initialization();
            }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
27.11.2012, 04:27     Выделение динамической памяти C++ #41
Затычка убила ошибку, но вопрос остался: ЗАЧЕМ В КЛАССЕ "СТРОКА" хранить две разные строки, требующие разные конструкторы для создания и тем самым создающие путаницу, т.к. одна из них всегда будет невалидна???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
owned
2 / 2 / 0
Регистрация: 25.11.2012
Сообщений: 76
27.11.2012, 05:04  [ТС]     Выделение динамической памяти C++ #42
Kuzia domovenok, т.к. одна из них всегда будет невалидна??? какая? я тебя не понимать покажи в коде, что убрать, я уже сам в нём запутался и долго разбираю
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2012, 05:24     Выделение динамической памяти C++
Еще ссылки по теме:

C++ Выделение динамической памяти
C++ Выделение динамической памяти
Выделение динамической памяти C++

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

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
27.11.2012, 05:24     Выделение динамической памяти C++ #43
C++
1
2
3
4
5
6
7
8
9
    String(const char * s)
    {
          string=NULL;
          strncpy(ss, s, 256);
    }
    ~String()
    {
        if (string) delete [] string;
            }
НО, это затычка, т.к. сама логика класса строка говорит, что класс должен содержать лишь один массив, а не 2 как у тебя
Yandex
Объявления
27.11.2012, 05:24     Выделение динамической памяти C++
Ответ Создать тему
Опции темы

Текущее время: 01:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru