Неск. глупых вопросов
От: YourLastSong  
Дата: 02.05.11 16:19
Оценка: :))
Здравствуйте, господа.

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

— Как можно изменить размеры окна консоли в том случае, если приложение было написано на BC 3.1? Знаю, как реализовать это только в Visual Studio. Дело в том, что у меня используется функция вывода на экран файлов, содержащихся в данной директории, в результате чего мне необходимо наличие скроллера в правой части окна консоли. Сделать наличие скроллера в правой части окна я никак не могу.

— От чего зависит возможность использования getch (); вместо _getch (); в Visual Studio?

— Какие есть аналоги textcolor в Visual Studio? Мне необходимо выводить цветной текст примерно таким же образом, как это можно было делать в BC 3.1.

— Почему нельзя использовать нетипизированные константы в Visual Studio?

— Какое значение выводится при попытке вывода значений массива, которые не были заполнены, если данный массив был создан при помощи функции malloc? В случае использования функции calloc все элементы будут изначально равны нулю.

— Какая разница между system ("cls") и system (_T("cls"))? В каких случаях можно использовать функцию system (_T("cls"))?

— Для чего именно необходим файл stdafx.h?

— Из-за чего многие рекомендуют в серьёзных проектах писать каждый раз std::cout вместо using namespace std?

— Зачем необходимо освобождать память, которая использовалась для динамического массива? Разве после завершения функции, в котором был объявлен динамический массив, память самостоятельно не освободится?

— Зачем необходимо закрывать файл?

Заранее благодарю за возможные ответы.
Re: Неск. глупых вопросов
От: morm Россия  
Дата: 02.05.11 16:25
Оценка:
Здравствуйте, YourLastSong, Вы писали:

YLS>Здравствуйте, господа.


YLS>Заранее извиняюсь, что отвлекаю вас от более сложных проблем, связанных с программированием, однако хотелось бы узнать ответы на след. вопросы:


YLS>- Как можно изменить размеры окна консоли в том случае, если приложение было написано на BC 3.1? Знаю, как реализовать это только в Visual Studio. Дело в том, что у меня используется функция вывода на экран файлов, содержащихся в данной директории, в результате чего мне необходимо наличие скроллера в правой части окна консоли. Сделать наличие скроллера в правой части окна я никак не могу.


YLS>- От чего зависит возможность использования getch (); вместо _getch (); в Visual Studio?


YLS>- Какие есть аналоги textcolor в Visual Studio? Мне необходимо выводить цветной текст примерно таким же образом, как это можно было делать в BC 3.1.


YLS>- Почему нельзя использовать нетипизированные константы в Visual Studio?


YLS>- Какое значение выводится при попытке вывода значений массива, которые не были заполнены, если данный массив был создан при помощи функции malloc? В случае использования функции calloc все элементы будут изначально равны нулю.


YLS>- Какая разница между system ("cls") и system (_T("cls"))? В каких случаях можно использовать функцию system (_T("cls"))?


YLS>- Для чего именно необходим файл stdafx.h?


YLS>- Из-за чего многие рекомендуют в серьёзных проектах писать каждый раз std::cout вместо using namespace std?


YLS>- Зачем необходимо освобождать память, которая использовалась для динамического массива? Разве после завершения функции, в котором был объявлен динамический массив, память самостоятельно не освободится?


YLS>- Зачем необходимо закрывать файл?


YLS>Заранее благодарю за возможные ответы.


Троллишь потихоньку?
Re: Неск. глупых вопросов
От: LaptevVV Россия  
Дата: 02.05.11 16:33
Оценка:
Здравствуйте, YourLastSong, Вы писали:

YLS>- Как можно изменить размеры окна консоли в том случае, если приложение было написано на BC 3.1? Знаю, как реализовать это только в Visual Studio. Дело в том, что у меня используется функция вывода на экран файлов, содержащихся в данной директории, в результате чего мне необходимо наличие скроллера в правой части окна консоли. Сделать наличие скроллера в правой части окна я никак не могу.

Понятия не имею..
YLS>- От чего зависит возможность использования getch (); вместо _getch (); в Visual Studio?
Микрософт подчеркивает, что _getch() — не стандартная функция.
Используй system("pause");
YLS>- Какие есть аналоги textcolor в Visual Studio? Мне необходимо выводить цветной текст примерно таким же образом, как это можно было делать в BC 3.1.
Только консольные функции WinAPI
YLS>- Почему нельзя использовать нетипизированные константы в Visual Studio?
Что такое нетипизированные константы?
YLS>- Какое значение выводится при попытке вывода значений массива, которые не были заполнены, если данный массив был создан при помощи функции malloc? В случае использования функции calloc все элементы будут изначально равны нулю.
malloc ника не инициализирует память. Поэтому может быть любая конфигурация битов.
YLS>- Какая разница между system ("cls") и system (_T("cls"))? В каких случаях можно использовать функцию system (_T("cls"))?
_T — это макрос, чтобы прога не зависела от кодировки символов.
YLS>- Для чего именно необходим файл stdafx.h?
Это вставляет Студия. Если хочешь, чтобы не было — создай "пустой" проект. В свойствах проекта проставь флажок Empty.
YLS>- Из-за чего многие рекомендуют в серьёзных проектах писать каждый раз std::cout вместо using namespace std?
Чтобы не включать стандартное пространство имен, более 90% из которых в проге обычно не нужны. Префикс std:: позволяет конкретные имена использовать...
YLS>- Зачем необходимо освобождать память, которая использовалась для динамического массива? Разве после завершения функции, в котором был объявлен динамический массив, память самостоятельно не освободится?
Нет, не освободится.
YLS>- Зачем необходимо закрывать файл?
Чтобы потом опять открыть. Это сильно зависит от вида файла и режима открытия...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Неск. глупых вопросов
От: YourLastSong  
Дата: 02.05.11 17:24
Оценка:
Спасибо за ответы.

Также интересует, как можно обезопасить программу от вывода значений в том случае, если оно будет превышать лимит данного типа? Надеюсь, вы поняли, о чём я говорю.

Извиняюсь, что вопросы настолько глупые для вас.
Re: Неск. глупых вопросов
От: MasterZiv СССР  
Дата: 02.05.11 17:26
Оценка: -1
On 02.05.2011 20:19, YourLastSong wrote:

> — Как можно изменить размеры окна консоли в том случае, если приложение было

> написано на BC 3.1?

Никак. Это приложение вообще считает, что работает в DOS-е. К Win32 API у него
нет доступа. Хотя ... можно попробовать использовать старые добрые прерывания
DOS-а (int 21) для изменения размера экрана. Но любой размер там установить
нельзя, только фиксированные из списка.

Знаю, как реализовать это только в Visual Studio. Дело в
> том, что у меня используется функция вывода на экран файлов, содержащихся в
> данной директории, в результате чего мне необходимо наличие скроллера в правой
> части окна консоли. Сделать наличие скроллера в правой части окна я никак не могу.

Ну и не надо это в консольном приложении.

=> — От чего зависит возможность использования getch (); вместо _getch (); в Visual
> Studio?

getch() и _getch () вообще-то нестандартные функции, их нет в С.
getch -- это функция из CURSES, _getch — из микросовтовской библиотеки эмуляции
чего-то подобного CURSES но под DOS, занываемой в МС conio.

Если у тебя доступны для приложения эти две библиотеки -- можно использовать
соответственно одну из этих функций. Если нет -- нельзя. В переносимом С-шном
приложении этих функций быть не дожно.

>

> — Какие есть аналоги textcolor в Visual Studio? Мне необходимо выводить цветной
> текст примерно таким же образом, как это можно было делать в BC 3.1.

Нет аналогов. Тебе надо переписывать программу с досовой на Win32 API и
использовать функции управления окном консоли.

> — Почему нельзя использовать нетипизированные константы в Visual Studio?

Почему нельзя ? можно.


> — Какое значение выводится при попытке вывода значений массива, которые не были

> заполнены, если данный массив был создан при помощи функции malloc?

Произвольное значение. Любое.

> — Какая разница между system ("cls") и system (_T("cls"))? В каких случаях можно

> использовать функцию system (_T("cls"))?

Первый вызов верный, второй -- нет.
Функция имеет такую сигнатуру:

int system( const char *command );

Соответственно, в виде параметра ей надо передавать char*, а не TCHAR*
system (_T("cls")) ни в каких случаях использовать нельзя,
нужно (если хочешь использовать TCHAR) писать

_tsystem( _T("cls") );

> — Для чего именно необходим файл stdafx.h?

Долго объяснять не хочу, дам краткий ответ : ни для чего.
Выкини stdafx.h, stdafx.cpp из проекта, проставь в проекте на
всех исходниках "Not using precompiled header" и всё будет хорошо.
stdafx.h -- это стандартный (дебильно названый) заголовок для генерации
precompiled header-ов в VC-проектак, precompiled header-ы нужны только для
ускорения трансляции больших проектов.

> — Из-за чего многие рекомендуют в серьёзных проектах писать каждый раз std::cout

> вместо using namespace std?

Если ты пишешь using namespace std, ты вносишь все имена (известные) из
пространства имён std в глобальное пространство имён и сводиш положительный
эффект существования пространств имён на нет.
В маленьких проектах это допустимо. В крупных сложных -- нет, возможны
конфликты имён из разных пространств имён.

> — Зачем необходимо освобождать память, которая использовалась для динамического

> массива?

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

Разве после завершения функции, в котором был объявлен динамический
> массив, память самостоятельно не освободится?

В Win32 освободится. В Linux освободится. В ДОС например не освобождалась (ется).
В других операционках -- тоже не известно.
Стандарты языков С и С++ тебе не дают гарантию того, что выделенная
и неосвобождённая динамическая память твоей программы будет возвращена
системе после завершения твоей программы. Поэтому ты ОБЯЗАН освобождать
всю выделенную память по выходу из программы.


> — Зачем необходимо закрывать файл?


Чтобы данные этого файла физически сохранились на диске. Если ты не закроешь
файл или не вызовиш для этого файла функцию flush(), запись файлов физически
на диск не гарантируется.
И по той же причине, что освобождать память -- файлы -- такой же ресурс, как
и память, кол-во файлов открытых в системе не бесконечно.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Неск. глупых вопросов
От: MasterZiv СССР  
Дата: 02.05.11 17:33
Оценка:
On 02.05.2011 20:33, LaptevVV wrote:

> YLS>- Какая разница между system ("cls") и system (_T("cls"))? В каких случаях

> можно использовать функцию system (_T("cls"))?
> _T — это макрос, чтобы прога не зависела от кодировки символов.

Нунуну... Товарищь преподаватель, зачем так вульгарно-то ...
Что значит "прога не зависела от кодировки символов" ? Она всегда
он них зависит. Это макросы т.н. generic-text routine mapping, которые
позволяют программе работать либо с 1-байтовыми, либо с несколькобайтовыми
(от 1 до N байт на символ), либо с двухбайтовыми (от 2 до N байт на символ)
кодировками символов. От конкретной кодировки символов программа не
перестаёт от этого зависеть, кодировка задаётся с помощью set_locale.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Неск. глупых вопросов
От: YourLastSong  
Дата: 02.05.11 17:40
Оценка:
Спасибо, что обратили внимание на мои вопросы.

MZ>Хотя ... можно попробовать использовать старые добрые прерывания

MZ>DOS-а (int 21) для изменения размера экрана. Но любой размер там установить
MZ>нельзя, только фиксированные из списка.

Не подскажете, как это можно реализовать?

MZ>Ну и не надо это в консольном приложении.


Почему?

MZ>Почему нельзя ? можно.


const f = 5;

При попытке скомпилировать файл выдаётся ошибка "missing type specifier — int assumed. Note: C++ does not support default-int". Я, видимо, совсем глупый в этом плане.

MZ>Произвольное значение. Любое.


У меня оно одно и то же постоянно. Может, зависит всё же как-то?
Re[2]: Неск. глупых вопросов
От: dilmah США  
Дата: 02.05.11 17:50
Оценка: +1
>> — Какое значение выводится при попытке вывода значений массива, которые не были
>> заполнены, если данный массив был создан при помощи функции malloc?

MZ>Произвольное значение. Любое.


ну, в общем случае, вплоть до undefined behaviour

MZ>Разве после завершения функции, в котором был объявлен динамический

>> массив, память самостоятельно не освободится?

MZ>В Win32 освободится. В Linux освободится. В ДОС например не освобождалась (ется).

MZ>В других операционках -- тоже не известно.

он про функцию, а не процесс спрашивал

>> — Зачем необходимо закрывать файл?


MZ>Чтобы данные этого файла физически сохранились на диске. Если ты не закроешь

MZ>файл или не вызовиш для этого файла функцию flush(), запись файлов физически
MZ>на диск не гарантируется.

ни close ни flush не гарантируют запись.
fflush флашит буфера libc.
Для гарантии записи fsync

файлы нужно закрывать потому что большинство программ/библиотек имеют неограниченное время жизни, т.е. для того чтобы можно было открывать файлы вновь и вновь.
Если известно что это не нужно -- скажем программа отрабатывает раз и выходит, то и закрывать не нужно.
Re[3]: Неск. глупых вопросов
От: fuyant  
Дата: 02.05.11 17:57
Оценка:
Здравствуйте, YourLastSong, Вы писали:

MZ>>Почему нельзя ? можно.


потому что С/С++ — строго типизированный язык

YLS>const f = 5;


он наверное имел в виду, что можно написать что-то типа
const void * а = NULL;

В случае const f = 5; не указан тип, а должен быть.
нельзя написать const f = 5; просто так, не указав, что это, потому что компилятор должен сразу знать, какой тип имеется в виду (а можут быть чуть ли не что угодно — int, float, double, bool etc)
Нельзя объявить тип, а потом заявить — вы знаете, я тут хочу, чтобы это был double, преобразуйте ка мне вот это непонятно что в дабл. Не говоря уже о том, что синтаксиса для этого нет.

YLS>При попытке скомпилировать файл выдаётся ошибка "missing type specifier — int assumed. Note: C++ does not support default-int". Я, видимо, совсем глупый в этом плане.


MZ>>Произвольное значение. Любое.


YLS>У меня оно одно и то же постоянно. Может, зависит всё же как-то?


Там валяется мусор, от чего он может зависеть? Сегодня и завтра он один, а послезавтра будет другой. Опираться на значения мусора — писать заведомо бажную программу с элементами UB.
Re: Неск. глупых вопросов
От: fuyant  
Дата: 02.05.11 18:01
Оценка:
Здравствуйте, YourLastSong, Вы писали:

YLS>- Зачем необходимо освобождать память, которая использовалась для динамического массива? Разве после завершения функции, в котором был объявлен динамический массив, память самостоятельно не освободится?


Если бы это происходило, то основной смысл и польза от динамически созданных данных потерялся бы
Если бы это происходило, то пракстически единственная разница была бы в том, что данные создаются не на стеке, а в куче — а это далеко не единственное назначение динамически созданных данных
Re[3]: Неск. глупых вопросов
От: dilmah США  
Дата: 02.05.11 18:05
Оценка:
MZ>>Почему нельзя ? можно.

YLS>const f = 5;


#define f 5
Re: Неск. глупых вопросов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 02.05.11 18:28
Оценка:
Здравствуйте, YourLastSong, Вы писали:

YLS>- Как можно изменить размеры окна консоли в том случае, если приложение было написано на BC 3.1? Знаю, как реализовать это только в Visual Studio. Дело в том, что у меня используется функция вывода на экран файлов, содержащихся в данной директории, в результате чего мне необходимо наличие скроллера в правой части окна консоли. Сделать наличие скроллера в правой части окна я никак не могу.


Лучше всего — вообще отказаться от работы с консольным вводом-выводом. Под Windows полно других средств. А то, потом тебе понадобится в консоль мышой тыкать, ещё, поди, кнопки и прочий текстовый UI изобретать начнёшь. Зачем?

YLS>- От чего зависит возможность использования getch (); вместо _getch (); в Visual Studio?


Цитата из MSDN про getch:

This POSIX function is deprecated beginning in Visual C++ 2005. Use the ISO C++ conformant _getch instead.

Складно, просто, легко запомнить. (c)

YLS>- Какие есть аналоги textcolor в Visual Studio? Мне необходимо выводить цветной текст примерно таким же образом, как это можно было делать в BC 3.1.


Снова, лучше перейти на стандартный GUI.

YLS>- Почему нельзя использовать нетипизированные константы в Visual Studio?


Наверное, из-за того, что C++ не поддерживает default-int, в отличие от C.

YLS>- Какое значение выводится при попытке вывода значений массива, которые не были заполнены, если данный массив был создан при помощи функции malloc? В случае использования функции calloc все элементы будут изначально равны нулю.


Неопределённое. malloc просто отрезает кусок памяти, а что в этой памяти будет лежать — неизвестно.

YLS>- Какая разница между system ("cls") и system (_T("cls"))? В каких случаях можно использовать функцию system (_T("cls"))?


Если твою программу предполагается компилировать как с поддержкой Unicode, так и без неё (см. опцию "Character Set" в свойствах проекта), то имеет смысл написать так:

_tcsystem(_T("cls"))


Но если ты не предполагаешь менять Unicode/MBCS, то имеет смысл воспользоваться одним из вариантов:
system("cls"); // MBCS

или
_wsystem("cls"L); // Unicode


YLS>- Для чего именно необходим файл stdafx.h?


Как правило, в него складывают редко изменяемые заголовочные файлы, которые имеет смысл поместить в precompiled header. Типичный stdafx.h выглядит примерно так:

#pragma once

#define WIN32_LEAN_AND_MEAN             // Exclude rarely-used stuff from Windows headers
#include <stdio.h>
#include <vector>
#include <map>
// ... длинный-длинный список инклюдов всего, что нужно, можно и что может понадобиться.


А сам precompiled header генерируется при компиляции stdafx.cpp (посмотри внимательно на опции этого файла в разделе Precompiled Headers свойств проекта).

YLS>- Из-за чего многие рекомендуют в серьёзных проектах писать каждый раз std::cout вместо using namespace std?


Чтобы не было явления, известного под названием "засирание глобального пространства имён". То есть чтобы имена из std не конфликтовали с такими же именами из других namespace. Поэтому общая рекомендация тут — воздерживаться от неумеренного использования using namespace. Возможны исключения, но сейчас не тот случай, чтобы их обсуждать.

YLS>- Зачем необходимо освобождать память, которая использовалась для динамического массива? Разве после завершения функции, в котором был объявлен динамический массив, память самостоятельно не освободится?


Нет, при выходе из функции память, распределённая new или malloc не освобождается. Исключение составляет только память, выделенная на стеке функцией alloca.

YLS>- Зачем необходимо закрывать файл?


Чтобы гарантированно сбросить содержимое файла на диск (более или менее гарантированно) и для экономии системных ресурсов, расходуемых на каждый открытый файл.

YLS>Заранее благодарю за возможные ответы.


Дык!
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[2]: Неск. глупых вопросов
От: dilmah США  
Дата: 02.05.11 18:34
Оценка:
YLS>>- Зачем необходимо закрывать файл?

ГВ>Чтобы гарантированно сбросить содержимое файла на диск (более или менее гарантированно)


да не сбрасывает close ничего на диск (ну разве что в виндоуз какое-то спецповедение).
Re[3]: Неск. глупых вопросов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 02.05.11 18:43
Оценка:
Здравствуйте, YourLastSong, Вы писали:

MZ>>Почему нельзя ? можно.


YLS>const f = 5;


YLS>При попытке скомпилировать файл выдаётся ошибка "missing type specifier — int assumed. Note: C++ does not support default-int". Я, видимо, совсем глупый в этом плане.


Тебе компилятор всё подробно объяснил. default-int допускается только в C, но не в C++. То есть если у тебя в некотором файле с расширением ".c" написано такое:

const f = 5;


...то компилятор подставит int вместо отсутствующего типа. Но это — только для C, если файл будет иметь расширение .cpp, то, соответственно, так делать нельзя.

Также, из-за отсутствия default-int на C++ нельзя писать такие функции:

func(int x){ return x; } /* Нет явного указания возвращаемого типа, по умолчанию считается int */


MZ>>Произвольное значение. Любое.

YLS>У меня оно одно и то же постоянно. Может, зависит всё же как-то?

Это может быть в debug-режиме — память заполняется специальными значениями, чтобы можно было чуть попроще отличить "использованную" память от "неиспользованной". Но вообще на такое свойство работы malloc рассчитывать нельзя — это только вспомогательный механизм для отладок.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[2]: Неск. глупых вопросов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 02.05.11 18:45
Оценка:
Здравствуйте, YourLastSong, Вы писали:

YLS>Также интересует, как можно обезопасить программу от вывода значений в том случае, если оно будет превышать лимит данного типа? Надеюсь, вы поняли, о чём я говорю.


Нет, не поняли. Если ты про какой-нибудь int, то превысить его лимит невозможно по определению.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[2]: Неск. глупых вопросов
От: YourLastSong  
Дата: 02.05.11 18:47
Оценка:
Так ведь неудобно иногда бывает использовать system ("pause"); из-за сообщения о том, что необходимо нажать клавишу.

ГВ>Наверное, из-за того, что C++ не поддерживает default-int, в отличие от C.


Спасибо, уже понял в результате ошибки "missing type specifier — int assumed. Note: C++ does not support default-int".
Re[3]: Неск. глупых вопросов
От: YourLastSong  
Дата: 02.05.11 18:52
Оценка:
ГВ>Нет, не поняли. Если ты про какой-нибудь int, то превысить его лимит невозможно по определению.

Если пользователь введёт число, превышающее лимит данного типа, то программа будет работать не так, как хотелось бы. Как этого можно лучше всего будет избежать?
Re[3]: Неск. глупых вопросов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 02.05.11 19:01
Оценка:
Здравствуйте, dilmah, Вы писали:

YLS>>>- Зачем необходимо закрывать файл?

ГВ>>Чтобы гарантированно сбросить содержимое файла на диск (более или менее гарантированно)
D>да не сбрасывает close ничего на диск (ну разве что в виндоуз какое-то спецповедение).

То есть? Ты хочешь сказать, что fclose не сбрасывает буферы перед закрытием потока?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[4]: Неск. глупых вопросов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 02.05.11 19:04
Оценка:
Здравствуйте, YourLastSong, Вы писали:

ГВ>>Нет, не поняли. Если ты про какой-нибудь int, то превысить его лимит невозможно по определению.


YLS>Если пользователь введёт число, превышающее лимит данного типа, то программа будет работать не так, как хотелось бы. Как этого можно лучше всего будет избежать?


Лучше всего — "ручным" анализом текста, который вводит пользователь.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: Неск. глупых вопросов
От: ДимДимыч Украина http://klug.org.ua
Дата: 02.05.11 19:11
Оценка:
Здравствуйте, YourLastSong, Вы писали:

YLS>- Какое значение выводится при попытке вывода значений массива, которые не были заполнены, если данный массив был создан при помощи функции malloc?


Если это обычный (релизный) malloc, то значения могут быть абсолютно любыми.
При использовании отладочных версий malloc может заполнять распределяемую память каким-нибудь фиксированным значением, например 0xDEADBEEF.

YLS>- Из-за чего многие рекомендуют в серьёзных проектах писать каждый раз std::cout вместо using namespace std?


Чтобы не пересекались идентификаторы из разных пространств имен.

YLS>- Зачем необходимо освобождать память, которая использовалась для динамического массива? Разве после завершения функции, в котором был объявлен динамический массив, память самостоятельно не освободится?


Не освободится. В этом одно из преимуществ динамического распределения памяти: создать массив можно в одной функци и выйти из нее, а удалить массив (освободить память) — в другой.

YLS>- Зачем необходимо закрывать файл?


Чтобы освободить запись в таблице открытых файлов. Приложение может иметь ограниченное количество открытых файлов, если их только открывать и не закрывать, то со временем таблица заполнится и файлы не смогут открываться.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.