Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodicheskie_ukazania_po_laboratornomu_praktik...docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.57 Mб
Скачать

Как уменьшить размер проекта?

При работе с проектом Visual Studio создаёт временные файлы. Они нужны только на этапе отладки проекта. После того, как работа с проектом завершена, рекомендуется убрать все лишние файлы (оставив файлы с исходным кодом). Для этого нужно нажать правой кнопкой на решении или проекте (если их в решение несколько), а затем из контекстного меню выбрать «Очистить решение».

Очистка проекта желательна, если нужно отправить проект по электронной почте (например, преподавателю для проверки). Тогда архив будет иметь гораздо меньший размер.

Иногда возникает ситуация, что проект был скомпилирован на одной машине, а затем перенесён на другую, но компиляция на другой машине не выполняется из-за «странных» ошибок. Обычно, очистка проекта и повторная сборка решают эту проблему.

Как обнаружить утечки памяти?

При работе с динамической памятью по разным причинам, но по вине программиста, могут возникать утечки памяти. Для каждого компилятора имеются свои средства их обнаружения. В следующей программе показано, как обнаружить утечки памяти для компиляторов Visual C++ версий 2008, 2010, 2012.

// Для обнаружения утечек памяти

#define _CRTDBG_MAP_ALLOC

#include <stdlib.h>

#include <crtdbg.h>

#ifdef _DEBUG

#ifndef DBG_NEW

#define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )

#define newDBG_NEW

#endif

#endif

// Далее обычный код

#include <iostream>

int main()

{

int *p = new int;

char *s = new char[16];

strcpy(s, "memleak");

// delete p;

// delete [] s;

// Для обнаружения утечек памяти

_CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE );

_CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDOUT );

_CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_FILE );

_CrtSetReportFile( _CRT_ERROR, _CRTDBG_FILE_STDOUT );

_CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE );

_CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDOUT );

_CrtDumpMemoryLeaks();

return 0;

}

Если в программе имеются утечки памяти, то по завершению работы программы будет отображена соответствующая информация:

Если утечек нет, то подобный вывод отсутствует. Самой важной информацией в выводимых сообщениях является отображение имени файла и номера строки, где были выделены неосвобождённые блоки. Более детально ознакомиться со структурой формата вывода можно по следующей ссылке http://msdn.microsoft.com/ru-ru/library/vstudio/x98tx3cf%28v=vs.110%29.aspx.

Приложение 9. Печать русских букв в среде Visual C++ 2008

Описание проблемы

При выводе информации на русском языке Visual C++ некорректно отображает русские символы.

#include <iostream>

using namespace std;

int main()

{

cout << "Привет!" << endl;

return 0;

}

Ниже показан результат выполнения этой программы:

Рис. 12. Пример некорректного отображения русских букв

Проблема возникает из-за того, что используются различные кодировки текста для приложений Windows и консольных приложений. В качестве Windows-приложения выступает «VisualStudio», в котором набирается русский текст (слово «Привет»). В качестве консольного приложения выступает программа. В первом случае используется кодировка 1251, во втором – 866.

Есть несколько способов решения данный проблемы.