Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Naudiz
14 / 12 / 1
Регистрация: 04.11.2011
Сообщений: 137
#1

Определение размера данных, находящихся по адресу x - C++

04.10.2013, 12:15. Просмотров 394. Ответов 11
Метки нет (Все метки)

Приветствую!

Сабж:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int n;
    cin >> n;
    int *a = (int*)calloc(n,sizeof(n));
    cout << sizeof(*a);
    system("PAUSE");
    return EXIT_SUCCESS;
}
Как вывести размер массива в байтах, содержащегося в a ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2013, 12:15     Определение размера данных, находящихся по адресу x
Посмотрите здесь:

Определение размера файла - C++
Здравствуйте, я учусь на программиста, нужна помощь в программе. #include &lt;fstream.h&gt; #include &lt;windows.h&gt; #include &lt;iostream&gt; ...

Определение размера массива - C++
Код: template &lt;class T,int N&gt; int arr_sz(T (&amp;arr)) {return N;} void sum(int a){cout&lt;&lt;a;}; int main() {

Определение размера массива - C++
Привет всем у меня несколько вопросов по языку си (компилятор gcc). 1) Есть, например след код: char* sym; char c = 'a'; ...

Определение размера динамического массива - C++
Вопрос может не много глупый, но я подзабыл с. Считаю размер динамического массива и результат получается неверный, логическую ошибку...

Определение размера char** argv - C++
Есть массив строк char** argv где я знаю число строк argc for (int i = 0; i &lt; argc; i++){ printf(&quot;%s \n&quot;,argv); } char**...

Определение размера массива в функции - C++
Всем доброго дня ! Подскажите пожалуйста, как можно определить размер массива в функции ? запись int n = sizeof(a)/sizeof(int);...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,364
04.10.2013, 12:21     Определение размера данных, находящихся по адресу x #2
C++
1
cout << n*sizeof(n) << endl;   // размер в байтах массива, аллокированного calloc
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
04.10.2013, 12:24     Определение размера данных, находящихся по адресу x #3
C++
1
cout << sizeof(*a) * n << endl;
Это?
Naudiz
14 / 12 / 1
Регистрация: 04.11.2011
Сообщений: 137
04.10.2013, 13:16  [ТС]     Определение размера данных, находящихся по адресу x #4
Нет, данные варианты не подходят. Я пытаюсь написать функцию, которая возвращает размер структуры данных находящейся по передаваемому ей адресу. (массива, объекта, пока только массива)Поэтому условие, что n не известно. (без использования n)
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,364
04.10.2013, 13:24     Определение размера данных, находящихся по адресу x #5
Легальными способами - никак. Нелегальные (хаки) - будут работать на одном конкретном компиляторе и одной конкретной ОС. Чуть что изменится - все поломается....
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
04.10.2013, 13:24     Определение размера данных, находящихся по адресу x #6
Naudiz, а вы задайте себе вопрос как определить конец массива и что будет если обратиться к элементу по адресу находящемуся вне массива посредством указателя на него. И все станет ясно.
Кликните здесь для просмотра всего текста
Никак

Не по теме:

CheshireCat, опять вы меня опередили

Naudiz
14 / 12 / 1
Регистрация: 04.11.2011
Сообщений: 137
04.10.2013, 13:38  [ТС]     Определение размера данных, находящихся по адресу x #7
Благодарю, я совсем забыл, что при динамическом выделении памяти последняя ячейка никак не помечается
Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 478
Записей в блоге: 1
04.10.2013, 13:38     Определение размера данных, находящихся по адресу x #8
Цитата Сообщение от CheshireCat Посмотреть сообщение
Легальными способами - никак
Явный недочет разработчиков стандарта С++. В других языках программирования возможно получить верхнюю границу динамического массива или кол-во элементов
Цитата Сообщение от Naudiz Посмотреть сообщение
Я пытаюсь написать функцию, которая возвращает размер структуры данных
Как вариант, добавить в эту структуру поле и запоминать в него размер. (При создании он нам известен)
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
04.10.2013, 13:52     Определение размера данных, находящихся по адресу x #9
Цитата Сообщение от Algoritmer Посмотреть сообщение
Явный недочет разработчиков стандарта С++. В других языках программирования возможно получить верхнюю границу динамического массива или кол-во элементов
Используйте std::vector
Ilot
04.10.2013, 14:10
  #10

Не по теме:

Цитата Сообщение от Algoritmer Посмотреть сообщение
Явный недочет разработчиков стандарта С++. В других языках программирования возможно получить верхнюю границу динамического массива или кол-во элементов
Очень много говориться о том, что С++ это гибкий язык. Кажется даже у самого Страуструпа говорится об этом(т.е. почему нет проверки выхода за размер массива)

Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
04.10.2013, 14:15     Определение размера данных, находящихся по адресу x #11
Цитата Сообщение от Ilot Посмотреть сообщение
почему нет проверки выхода за размер массива

Не по теме:

тлетворное родство с С

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2013, 14:23     Определение размера данных, находящихся по адресу x
Еще ссылки по теме:

Определение размера массива + sizeof - C++
Массив из 6 чисел: sizeof возвращает 24 байта. Тот же массив вызван функцией возвращает только 4 байта. #include &lt;iostream&gt; using...

Определение размера одномерного массива - C++
Добрый день. Необходимо задать размер одномерного массива. В цикле for стоит переменная - счетчик, которая увеличивается на единицу при...

Определение размера динамического массива строк - C++
Здравствуйте, столкнулся с проблемой предопределения размера массива строк. Проблема в том, что я не знаю, какой размер мне выделить при...

Преобразование числа в символ и определение размера, - C++
Вот что я написал: #include&lt;iostream&gt; #include&lt;cmath&gt; using namespace std; void main() { const int n=5; int M={8,2,3,4,5}; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
13057 / 7320 / 817
Регистрация: 27.09.2012
Сообщений: 18,066
Записей в блоге: 3
Завершенные тесты: 1
04.10.2013, 14:23     Определение размера данных, находящихся по адресу x #12
Цитата Сообщение от Algoritmer Посмотреть сообщение
Явный недочет разработчиков стандарта С++. В других языках программирования возможно получить верхнюю границу динамического массива или кол-во элементов
Для массива и в C++ можно получить, а для динамически выделяемой памяти только не стандартными средствами, если таковые предоставляет компилятор

Добавлено через 51 секунду
Цитата Сообщение от Algoritmer Посмотреть сообщение
Как вариант, добавить в эту структуру поле и запоминать в него размер. (При создании он нам известен)
А если вдруг перераспределение памяти, то везде менять эту штуку? А если вдруг копирование?

Добавлено через 1 минуту
Цитата Сообщение от Ilot Посмотреть сообщение
т.е. почему нет проверки выхода за размер массива
потому что стараются придерживаться идиомы "Не нужно платить за то, что не используется"
Yandex
Объявления
04.10.2013, 14:23     Определение размера данных, находящихся по адресу x
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru