Форум программистов, компьютерный форум 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
21.11.2016, 19:52  [ТС]     Динамическая память C++
nd2,
Если cin.get() используешь, то откуда возьмётся '\0' в mass
Поправил.
Lost17,
в main заведите указатель. Ему присваивайте результат getline() и его же удаляйте.
Сделал.

Пробежался построчно в дебаге, "перепись" строк отрабатыват корректно примерно до 25-го элемента строки, почему-то. Не подскажите, в чем причина? Где-то я не правильно управляю выделением и освобождением памяти, не понимаю, где именно.

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
30
31
32
33
#include <iostream>
#include <cstdlib>
 
char *getline() {
 
    char * mass = new char [2];
    char * new_mass = new char [1];
    int i=0;
 
    while((mass[i] = std::cin.get()) != '\n' && !std::cin.eof()) { // пока не закончилась строка ввода
            mass[i+1] = '\0';
 
            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'; // в конец нового массива добавляю 0
 
            delete [] mass;
            char * mass = new char [i+2]; // освобождаю и расширяю старый массив на 1
            for(int k = 0; new_mass[k]; ++k) mass[k] = new_mass[k]; // возобновляю все, что в нем было, из нового массива, чтобы расширить новый и не потярять данные
            i++;
    }
    delete [] mass; // освобождаю память
 
    return(new_mass); // возвращаю новый массив
}
 
int main() {
    char * a = getline();
    std::cout << a;
    delete [] a;
    return 0;
}
 
Текущее время: 04:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru