• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Массивы и память

  • Автор темы Kirill_d_class
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

Kirill_d_class

Допустим, я пишу :

...
int N;
int *q;

clrscr();
cout << "\nN=";
cin >> N;
q = new int [N];
enter_mas(&N, q);
...

а в функции enter_mas принмаю параметры таким образом:

void enter_mas(int *n, int A[])
{
int i, No;
...

Не увеличится ли объём памяти, динамически веделенный в куче из-за
входного безразмерного массива A[](???

Спасибо.
 
A

AlexGin

Нет, не должен увеличиваться:

в общем-то для выходного кода
(от компилятора) все равно как писать:

1)
void enter_mas(int *n, int A[])
{
int i, No;

2)
void enter_mas(int *n, int *A)
{
int i, No;

Лично я предпочитаю (для C & C++)
второй вариант - я сразу же вижу по коду,
что в функцию передается указатель.

В языках C и C++ массивы представляются
при помощи указателей.


Что же касается выделенной памяти - ее размер
будет одинаков (q = new int [N]) и определяется как
sizeof(int)*N.

Главное - чтобы в теле enter_mas не было выхода за N...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!