Функция, которая возвращает размер области памяти, занятой переменной 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
указывает на.