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

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

Войти
Регистрация
Восстановить пароль
 
Funky108
2 / 2 / 0
Регистрация: 13.11.2009
Сообщений: 24
#1

Выделение памяти. - C++

07.12.2009, 18:45. Просмотров 688. Ответов 6

Значит так.Задача такая.
Ввести строки или строку символов. Сколько мы будем вводить символов неизвестно.Может быть 10 а может быть больше или меньше.Так вот как выделить память на этот массив если я буду вводить неизвестно сколько символов если функция malloc() выделяет определенное количество памяти?А мне нужно чтобы динамическая память увеличивалась при вводе символа. Знаю еще функции realloc() которая добавляет к выделенной памяти еще некоторую область памяти.

В общем задача ввести символы неизвестного количества.

Как это сделать?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2009, 18:45     Выделение памяти.
Посмотрите здесь:

Выделение памяти - C++
Часто возникает такая проблема, когда конфигурирую проект как Release происходит ошибка выделения памяти (при вызывании new), например...

Выделение памяти - C++
Вот кусок кода, класс и функция добавления в список Класс занимает 64 бита, я добавляю 10 элементов в список - 640 бит Потом отнимаю...

Выделение памяти - C++
Здравствуйте! #include<iostream> int main() { int *mass = new int ; int *mass2 = new int ; std::cout << (unsigned int)mass <<...

Выделение памяти - C++
Добрый вечер. Немогу никак понять некоторые тонкости выделения памяти. Во первых: на что указывает указатель, при записи char*...

Выделение памяти - C++
Какой суммарный объем памяти в байтах будут занимать поля CObj всех объектов класса CEx в этой программе: class CEx {public: static...

Выделение памяти - C++
Платформа и компилятор x64. Установлено 64Gb ОЗУ, 60Gb из них откусил SQL Server. Пытаюсь сделать следующее: struct Dictionary { ...

Выделение памяти - C++
Доброго времени суток. Чтобы выделить память под двумерный массив в такой форме: //n - переменная, M - константа arr = new double...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
08.12.2009, 00:06     Выделение памяти. #2
с помощью malloc - выделить память, с помощью realloc - нарастить выделение
Sayrus89
31 / 31 / 1
Регистрация: 26.10.2009
Сообщений: 98
08.12.2009, 00:54     Выделение памяти. #3
почему бы просто не использовать std::string?
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
08.12.2009, 01:03     Выделение памяти. #4
C++
1
2
std::string s;
       std::cin>>s;
вводи скоко хочешь
Sayrus89
31 / 31 / 1
Регистрация: 26.10.2009
Сообщений: 98
08.12.2009, 01:08     Выделение памяти. #5
тогда уже:
C++
1
2
string s;
getline( cin, s );
Funky108
2 / 2 / 0
Регистрация: 13.11.2009
Сообщений: 24
08.12.2009, 20:42  [ТС]     Выделение памяти. #6
А на си как это будет выглядеть? то бишь не С++ код

Думал сначала выделить память допустим два байта и при нажатии какойто клавиши функцией realloc организовать увелечение памяти на +1 байт и зациклить пока не будет Enter клавиша нажата.

Пока не представляю как
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2009, 21:14     Выделение памяти.
Еще ссылки по теме:

Выделение памяти - C++
int main() { FILE *fIn = NULL, *fOut =NULL; Error EMyError; CNodeStack *Start; CNodeStack *ListF = new CNodeStack; ...

Выделение памяти - C++
Эта программа должна забрать у системы 10 МБ, но диспетчер задач показывает, что программа забирает 163 МБ. Почему ? ...

Выделение памяти - C++
Всем доброго времени суток! Пытаюсь сделать связанный список на 100кк элементов, но не выделив памяти и под половину, программа жрёт 4...

Выделение памяти(С = С++) - C++
Привет. Нужна помощь, в выделении памяти. Есть код на С, нужно перевести его в С++. int SaveFileOne(int i) { FILE *f; if ((f =...

Выделение памяти - C++
Доброго всем вечера. В книжке нашел задание: определить класс, представляющий стек. Сделал так, что при заполнении всего стека,...


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

Или воспользуйтесь поиском по форуму:
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
08.12.2009, 21:14     Выделение памяти. #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
На Си это будет просто как табуретка.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    char *s;
    int i, maxlen = 512;
 
    printf("Введите строку: ");
    s = (char *) malloc(maxlen);
    for(i = 0; (s[i] = getchar()) != '\n'; i++)
        if(i >= maxlen - 1) {
            maxlen *= 2;
            s = realloc(s, maxlen);
        }
    s[i] = '\0';
 
    printf("Строка: %s\n", s);
    free(s);
    return 0;
}
Yandex
Объявления
08.12.2009, 21:14     Выделение памяти.
Ответ Создать тему
Опции темы

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