LINUX.ORG.RU

Программа занимает много памяти [Новичок]

 , , ,


0

1

Решил я, значит, изучить плюсы, но столкнулся с маленькой проблемой, которую никто и не замечает на моем этапе: программы занимают много памяти. Вот пример:

#include <iostream>
#include <vector>
#include <conio.h>
#include <string>

int main()
{
    using namespace std;
    string first_name; // Две строки, обозначающие имена
    string last_name;
    char grade;
    short age;
    cout << "What is your first name?\n";
    getline(cin, first_name);
    cout << "What is your last name?\n";
    getline(cin, last_name); // Для того, чтобы можно было ввести два и более слова с пробелом
    cout << "What letter grade do you deserve?\n";
    cin >> grade;
    cout << "How old are you?\n";
    cin >> age;
    cout << "Name: " << last_name << ", " << first_name << endl; // Вывод данных
    cout << "Grade: " << grade << endl;
    cout << "Age: " << age << endl;
    _getch();
    return 0;
}

Занимает такая дрянь 904 КБ в режиме простоя и 944 в режиме пользования. А ведь хватало и 640 КБ навсегда!

Или вот еще пример, только я не до конца понял, как удалить указатель на name.

#include <iostream>

struct candy // Структура
{
       char *name; // Указатель, чтобы перенести в основной код
       float weight;
       int calories;
       };
int main()
{
    using namespace std;
    candy array[3]; // Массив структур
    array[0].name = "Verizon"; // Всякие левые данные
    array[0].weight = 2.56;
    array[0].calories = 200;
    array[1].name = "Spigel";
    array[1].weight = 2.43;
    array[1].calories = 350;
    array[2].name = "Rebel";
    array[2].weight = 1.58;
    array[2].calories = 400;
    cout << "If you will eat " << array[0].name << " chocolate, you will have " << array[0].calories
    << " calories and its weight is " << array[0].weight << endl; // Длиннокод, выводит данные
    cout << "If you will eat " << array[1].name << " chocolate, you will have " << array[1].calories
    << " calories and its weight is " << array[1].weight << endl;
    cout << "If you will eat " << array[2].name << " chocolate, you will have " << array[2].calories
    << " calories and its weight is " << array[2].weight << endl;
    cin.get();
    return 0;
}

Как можно сократить потребление памяти и возможно ли это на моем моменте развития?


Занимает такая дрянь 904 КБ в режиме простоя и 944 в режиме пользования. А ведь хватало и 640 КБ навсегда!

$ gcc -O2 test.cpp -lc++ -o test
$ ls -la
16K Jul 24 10:04 test*

#include <conio.h>
_getch();

И че вы со своими вендо-проблемами на LORе делаете?

Или вот еще пример, только я не до конца понял, как удалить указатель на name.

Удалять указатель ненужно. Нужно освобождать выделенную память. Но я в упор не вижу, где вы ее просили выделить.

Как можно сократить потребление памяти и возможно ли это на моем моменте развития?

Говорят есть умные книжки, можно попробовать начать их читать.

andreyu ★★★★★
()
Ответ на: комментарий от anonymous

ох уж эти пятизвёздные макаки

ТС не уточнил, где программа занимает много памяти. Я уточнил - на моем диске она занимает менее 20кб. Какие у вас претензии к конкретике?

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

А ведь хватало и 640 КБ навсегда!

намекает же

алсо

выделенную память. Но я в упор не вижу, где вы ее просили выделить

std::string божьим духом работает?

anonymous
()
Ответ на: комментарий от anonymous

А ведь хватало и 640 КБ навсегда!

намекает же

Может он о рам-диске речь ведет.

std::string божьим духом работает?
char *name; // Указатель, чтобы перенести в основной код

Какое из слов в фразе «как удалить указатель на name» вы не смогли прочесть?

andreyu ★★★★★
()
Последнее исправление: andreyu (всего исправлений: 1)
Ответ на: комментарий от anonymous

std::string божьим духом работает?

Как часто вы освобождаете память, которую выделил std::string?

andreyu ★★★★★
()
Ответ на: комментарий от ados

Умение писать маленькие программы придет со временем. Не нужно на этом зацикливаться на первой неделе изучения языка.

prefetch
()
Ответ на: комментарий от XMs

У меня Win XP, хотя там менеджер врет немного тоже

Hubble
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.