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

Динамическая память C++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Функции в с++ http://www.cyberforum.ru/cpp-beginners/thread1855246.html
Вводится последовательность из N целых чисел. Найти в каждом числе последовательности сумму четных цифр. Для подсчета суммы четных цифр числа написать функцию. Пожалуйста без массивов, через цикл for.
C++ Вывод списка приложений Здравствуйте. Как можно вывести список работающих приложений в консоль? http://www.cyberforum.ru/cpp-beginners/thread1855233.html
Написать программу для предложенного варианта исследуемой функции C++
Пожалуйста,помогите написать программу на языке С++. 1.Составить алгоритм и программу для предложенного варианта. Исходные данные необходимо подобрать самостоятельно, исходя из допустимой области значений исследуемой функции.
C++ Записать выражение, зависящее от координат точки X1 и Y1
Записать выражение, зависящее от координат точки X1 и Y1 и принимающее значение TRUE, если точка принадлежит заштрихованной области, и FALSE, если не принадлежит. Сделал так, но что-то не то... int main() { float x, y; int x1 = 0, y1 = 1; //нужно ли это вообще использовать? int x2 = 1, y2 = 0; int x3 = 0, y3 = -1; int x4 = -1, y4 = 0;
C++ Составить программу, которая построчно печатает содержимое непустого текстового файла http://www.cyberforum.ru/cpp-beginners/thread1855194.html
Составить программу, которая построчно печатает содержимое непустого текстового файла, вставляя в начало каждой печатаемой строки ее порядковый номер.
C++ Составить программу и выполнить перегрузку операторов Описать класс для работы со строкой. Выполнить перегрузку операторов ввода «>>», вывода «<<» и оператора присваивания «=». подробнее

Показать сообщение отдельно
kalabrod
0 / 0 / 0
Регистрация: 13.02.2015
Сообщений: 40
20.11.2016, 13:59     Динамическая память C++
Народ, подскажите, плиз, что я делаю не так?
Надо посимвольно ститать строку, в процессе выделяя ей ровно столько памяти, сколько требуется (динамическая память).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <cstdlib>
 
char *getline() {
 
    char * mass = new char [1];
    char * new_mass = new char [1];
    int i=0;
 
    while((mass[i] = std::cin.get()) != '\n' && !std::cin.eof()) { // пока не закончилась строка ввода
            delete [] new_mass;
            char * new_mass = new char [i+2]; // освобождаю и расширяю новый массив на 1
            for(int k = 0; mass[k]; ++k) new_mass[k] = mass[k]; // переписываю старый массив в новый, чтобы потом очистить его и расширить
            new_mass[i+1] = '\0'; // в конец нового массива добавляю ноль
 
            delete [] mass;
            char * mass = new char [i+2]; // освобождаю и расширяю старый массив на 1
            for(int k = 0; new_mass[k] != '\0'; ++k) mass[k] = new_mass[k]; // возобновляю все, что в нем было, из нового массива, чтобы расширить новый и не потярять данные
            i++;
    }
    delete [] mass; // освобождаю память
    return(new_mass); // возвращаю новый массив
}
 
int main() {
    std::cout << getline();
    delete [] getline();
    return 0;
}
Подозреваю, что проблема с очисткой памяти. Код работает лишь на небольших строках.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru