Функция, которая возвращает размер области памяти, занятой переменной C++

Я готовлюсь к экзамену, который у меня есть на следующей неделе, и у меня возникают проблемы с пониманием динамического распределения памяти. У меня есть вопрос, на который я не знаю, как ответить;

строка 4: int * arr = new int [3];

Напишите функцию, которая включает в себя строку 4 выше и возвращает размер ячейки памяти, занимаемой переменной arr. Используйте подпись:

int size_of_variable_star_arr ();

Я предполагаю, что должен использовать как main.cpp, так и function.cpp - главный файл должен содержать переменные массива, а файл функции должен содержать массив, который его возвращает.

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

 //Main.cpp
 #include <iostream>
using namespace std;

int main(){
//int *arr = new int[3];

arr[0] = 1;
arr[1] = 2; 
arr[2] = 3;
arr[3] = 4;

cout << "Array: ";
}


 //function.cpp
 #include <iostream>
 using namespace std;

 int size_of_variable_star_arr(){
 int *arr = new int[3];
   for(int i = 0; i < 4; i++){
       cout << arr[i] << " ";
  }
  return 0;
}

1 ответ

Решение

Это действительно странный вопрос, но в любом случае вот ответ:

int size_of_variable_star_arr() {
    int *arr = new int[3];
    delete [] arr;
    return sizeof(arr);
}

Заметки:

  • я добавил delete [] отменить (ненужно) new
  • Возвращает размер переменной arr, как указано в вопросе. Не размер блока памяти, который arr указывает на.
Другие вопросы по тегам