1 / 1 / 0
Регистрация: 14.11.2011
Сообщений: 49
1

Слишком много памяти для простого проекта

28.07.2012, 23:13. Показов 5151. Ответов 39
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброе время суток!

Подскажите, пожалуйста! Такой вот случай: программа по коду большая (более 4440 строк), но использует всего две библиотеки - vcl и fstream. В ней много элементов-картинок (около 220 штук, но по дисковому пространству они занимают всего около 5 Мб). Все действия происходят на одной-единственной форме. Так вот... При старте и в процессе работы программа потребляет 50604 килобайта оперативной памяти! Грешу на то, что сделана всего одна форма. Но это необходимо: форма тоже необычная, нарисованная, и все действия должны происходить именно на ней. Среда: Embarcadero C++ Builder XE2. Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.07.2012, 23:13
Ответы с готовыми решениями:

Запускается слишком много окон CMD
Никак не могу понять почему запускается огромная туча окон CMD if (i == Memo2->Lines->Count)...

Определено слишком много полей (но поля всего 5)
Всем привет. Пишу программку для сведения итогов, преобразование XML в EXCEL. Программа...

После компиляции проекта exe файл весит 14 755 кб. Это слишком много для программы с 3 функциями
Меня смущает, что после компиляции проекта exe файл весит 14 755 кб. Это слишком много для...

Realm занимает слишком много памяти
Доброй ночи. Есть приложение, к которому подключена БД realm. Мне нужно хранить в ней...

39
Практикантроп
4824 / 2717 / 525
Регистрация: 23.09.2011
Сообщений: 5,777
30.07.2012, 21:15 21
Author24 — интернет-сервис помощи студентам
Про *.dll не понял. Чтоб очистить картинки (и освободить память) - Image ->Picture = NULL ;
1
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
30.07.2012, 21:16 22
Чтоб очистить картинки (и освободить память) -
C++
1
Image ->Picture = NULL ;
Так а delete ?
1
Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
30.07.2012, 22:05 23
у меня почему то неработает
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 <vcl.h>
#include "PngImage.hpp"
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
HANDLE h = LoadLibrary(L"Core.dll");
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TResourceStream *mmm = new TResourceStream(0,"PNG1","IMAGE");
    TPNGObject *pic1 = new TPNGObject();
    pic1->LoadFromStream(mmm);
    Image1->Picture->Bitmap->Assign(pic1);
    delete pic1;
    mmm = new TResourceStream(0,"PNG2","IMAGE");
    TPNGObject *pic2 = new TPNGObject();
    pic2->LoadFromStream(mmm);
    Image2->Picture->Bitmap->Assign(pic2);
    delete pic2;
    delete mmm;
}
//---------------------------------------------------------------------------
и 2 ошибки
C++
1
2
[BCC32 Error] Unit1.cpp(21): E2285 Could not find a match for 'TResourceStream::TResourceStream(int,const char *,const char *)'
[BCC32 Error] Unit1.cpp(26): E2285 Could not find a match for 'TResourceStream::TResourceStream(int,const char *,const char *)'
0
Практикантроп
4824 / 2717 / 525
Регистрация: 23.09.2011
Сообщений: 5,777
30.07.2012, 22:16 24
TResourceStream переопределено в pngimage.pas; видимо мы используем разные версии этого компонента (ver.1.564 (31 July 2006))
0
Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
30.07.2012, 22:21 25
Цитата Сообщение от nick42 Посмотреть сообщение
TResourceStream переопределено в pngimage.pas; видимо мы используем разные версии этого компонента (ver.1.564 (31 July 2006))
Я работаю в XE2 Up 4. И где взять этот компонент?, я не подкючал вроде его.
0
Практикантроп
4824 / 2717 / 525
Регистрация: 23.09.2011
Сообщений: 5,777
30.07.2012, 22:27 26
Тогда в поток из ресурсов запускай, как определено в системе (там только два параметра, если не ошибаюсь).
0
Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
30.07.2012, 22:29 27
Цитата Сообщение от nick42 Посмотреть сообщение
Тогда в поток из ресурсов запускай, как определено в системе (там только два параметра, если не ошибаюсь).
Я ничего непонел
0
Практикантроп
4824 / 2717 / 525
Регистрация: 23.09.2011
Сообщений: 5,777
30.07.2012, 22:36 28
Если включены подсказки в редакторе, то после набора строки TResourceStream( и небольшой паузы должна появиться подсказка об ожидаемом формате для параметров. Кажется, в стандартном TResourceStream всего два чарта, - без int в начале. Я это хотел сказать. Выдаваемые две ошибки - это ведь от несовместимости форматов TResourceStream.
0
Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
30.07.2012, 22:40 29
nick42,
Миниатюры
Слишком много памяти для простого проекта  
0
Практикантроп
4824 / 2717 / 525
Регистрация: 23.09.2011
Сообщений: 5,777
30.07.2012, 22:44 30
- тогда может быть поможет добавление L перед кавычками ( ..Stream(0,L"PNG1",L"IMAGE"); )
0
Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
30.07.2012, 22:46 31
nick42, Я жестоко тупонул.
При нажатии на кнопку пишет
Resource PNG1 not found.
0
Практикантроп
4824 / 2717 / 525
Регистрация: 23.09.2011
Сообщений: 5,777
30.07.2012, 22:50 32
Что ж.. - кнопке стоит верить. Ресурсы должны выглядеть вот так приблизительно (в оттранслированной программе)__
Миниатюры
Слишком много памяти для простого проекта  
0
1 / 1 / 0
Регистрация: 14.11.2011
Сообщений: 49
30.07.2012, 23:06  [ТС] 33
Цитата Сообщение от nick42 Посмотреть сообщение
Чтоб очистить картинки (и освободить память) - Image ->Picture = NULL ;
Спасибо большое!)

Avazart, Вам тоже)

Я выгрузил библиотеку при помощи функции FreeLibrary((HMODULE)hLib); А с картинками сам бы не додумался
0
Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
30.07.2012, 23:24 34
nick42, Тогда такой вопрос в какой ресурс нужно кидать эти кортинки?
0
Практикантроп
4824 / 2717 / 525
Регистрация: 23.09.2011
Сообщений: 5,777
30.07.2012, 23:28 35
Без понятия. Пишите хоть так: PNG1 RCDATA "filename". Потом при извлечении можно указывать TResourceStream(0,L"PNG1",RT_RCDATA) <пишу по памяти, без проверки>
1
Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
30.07.2012, 23:35 36
Цитата Сообщение от nick42 Посмотреть сообщение
Пишите хоть так: PNG1 RCDATA "filename".
А куда это писать?
0
Практикантроп
4824 / 2717 / 525
Регистрация: 23.09.2011
Сообщений: 5,777
30.07.2012, 23:45 37
Цитата Сообщение от ivan.-94 Посмотреть сообщение
А куда это писать?
Создайте текстовый файл name.rc в любом текстовом редакторе; запишите там строки:
PNG1 RCDATA "filename1.png"
PNG2 RCDATA "filename2.png"
. . .
и подключите этот файл к проекту (Project-Add to Project).
1
Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
31.07.2012, 00:12 38
nick42, Зделал как вы и сказали, но то же самое и осталось.
0
Практикантроп
4824 / 2717 / 525
Регистрация: 23.09.2011
Сообщений: 5,777
31.07.2012, 09:11 39
стало быть планида у вас такая...
0
Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
31.07.2012, 11:18 40
nick42, Как говориться "Утро вечера мудренее". Я так тупил вчера.
0
31.07.2012, 11:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.07.2012, 11:18
Помогаю со студенческими работами здесь

Svchost.exe потребляет слишком много памяти
Пожалуйста подскажите как можно уменьшить потребление памяти svchost.exe И обьясните мне...

Windows жрет слишком много оперативной памяти
Здравствуйте! Появилась проблема с оперативкой. Имею 4гб ОЗУ, в последнее время комп начал сильно...

Просмотр изображений потребляет слишком много памяти
Привет Сделал программу для просмотра изображений. Использовал готовый удалена ссылка на...

Слишком много памяти в ОЖИДАНИИ. Как узнать, чем она занята?
скриншот:


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru