powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Съедает у меня 3 мегобайта памяти
2 сообщений из 2, страница 1 из 1
Съедает у меня 3 мегобайта памяти
    #32557889
Пиликалка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не поможите разобратся, в чем тут дело ... съедает памяти 3 мегов ...
а в чем понять не могу ... начинающий же я ...

CString GetConst(LPTSTR RID) // Âîçâðàò çíà÷åíèÿ êîíñòàíòû ïî RID-ó
{

CDaoDatabase cDaoDB;
CDaoRecordset *cDaoRset;

try
{
cDaoDB.Open(DataBasePath); // "C:\\Dispatcher\\Dispatcher.mdb"
} catch(CDaoException* e)
{
// Îòëàâëèâàåì îøèáêè îòêðûòèÿ ÁÄ, åñëè îíè åñòü
MsgBox(e->m_pErrorInfo->m_strDescription);
}

if (!cDaoDB.IsOpen()) return "";
cDaoRset = new CDaoRecordset(&cDaoDB);


// Îòêðûâàåì òàáëèöó
CString str_RID; str_RID="SELECT * FROM [Const] WHERE ([RID]='";
str_RID = str_RID + RID;
str_RID = str_RID + "');";
cDaoRset->Open( AFX_DAO_USE_DEFAULT_TYPE, str_RID);


// Âûáèðàåì çíà÷åíèå
COleVariant var;
//CDBVariant var;

if (!cDaoRset->IsEOF())
{

// Çàïèñü èìååòñÿ
cDaoRset->MoveFirst();
cDaoRset->GetFieldValue("Size", var);

// Çàêðûâàåì òàáëèöó
cDaoRset->Close();

// Çàêðûâàåì ÁÄ
cDaoDB.Close();

delete cDaoRset;
//return Convert_COleVariant_str(var);
return "";
}
else
{
// Îòñóòñòâóåò çàïèñü
// Çàêðûâàåì òàáëèöó
cDaoRset->Close();

// Çàêðûâàåì ÁÄ
cDaoDB.Close();

var.Clear();
delete cDaoRset;
return "";
}

}
...
Рейтинг: 0 / 0
Съедает у меня 3 мегобайта памяти
    #32558463
viper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При выполнении 3 метра? или уже после отработки? Если при выполнении то это не так уж и страшно... точно утверждать не буду, но выглядить естественно...
А вообще как по мне не безопасно генерить запрос на основе аргумента (особенно если он генерится пользователем).
А это место:
if (!cDaoRset->IsEOF())
{

// Çàïèñü èìååòñÿ
cDaoRset->MoveFirst();
cDaoRset->GetFieldValue("Size", var);

// Çàêðûâàåì òàáëèöó
cDaoRset->Close();

// Çàêðûâàåì ÁÄ
cDaoDB.Close();

delete cDaoRset;
//return Convert_COleVariant_str(var);
return "";
}
else
{
// Îòñóòñòâóåò çàïèñü
// Çàêðûâàåì òàáëèöó
cDaoRset->Close();

// Çàêðûâàåì ÁÄ
cDaoDB.Close();

var.Clear();
delete cDaoRset;
return "";
}

Гораздо лутше смотрится так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
if (!cDaoRset->IsEOF()) 
{
// Çàïèñü èìååòñÿ
cDaoRset->MoveFirst(); 
cDaoRset->GetFieldValue("Size", var);
//return Convert_COleVariant_str(var);
return "";
}

// Îòñóòñòâóåò çàïèñü 
// Çàêðûâàåì òàáëèöó
cDaoRset->Close();

// Çàêðûâàåì ÁÄ
cDaoDB.Close();

var.Clear();
delete cDaoRset;
return "";

_________________________________________________
Легче написать не правильную программу чем понять правильную (С) Alan Perlis
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Съедает у меня 3 мегобайта памяти
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]