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

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

Войти
Регистрация
Восстановить пароль
 
SuperHero
Заблокирован
#1

Где - то слышал, что в указателе сохраняется информация о размере массива, верно ли это? - C++

24.07.2014, 12:11. Просмотров 313. Ответов 9
Метки нет (Все метки)

Привет! Ну вот допустим:
C++
1
int *X = new int[10];
Можно ли по указателю X как то явно узнать, что он ссылается на непрерывный блок памяти, в котором подряд идут 10-ть интов ? Вроде какая то была фишка для этого ...

P.S.: аллокатор new выделает выравненный блок памяти?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2014, 12:11     Где - то слышал, что в указателе сохраняется информация о размере массива, верно ли это?
Посмотрите здесь:

Информация не сохраняется файл через fstream - C++
Если создать объект типа fstream, то в файл почему-то ничего не записывается (в отличие от ofstream) fstream...

Структура в С++ (На автовокзале сохраняется информация об автобусных рейсах:) - C++
На автовокзале сохраняется информация об автобусных рейсах: номер рейса, пункты отправления и назначения, время прибытия и отправления, тип...

Дано число n. Верно ли, что это число содержит ровно 3 одинаковых цифры - C++
Помогите пожалуйста с решением очень надо.))) С++ Добавлено через 44 минуты Парни выручайте... осталось 30 минут((( срочно нужно, а...

Не могу измерить размер массива в указателе - C++
Вообщем, много раз разные вещи перебирал, и решил тут спросить. string *help=new string; help="dasd"; help="24"; Как мне...

Верно ли,что все элементы массива B входят в массив A - C++
Даны два одномерных массива A(n) и B(m).Верно ли,что все элементы массива B входят в массив A?

Верно ли,что все элементы массива B входят в массив A? - C++
Даны два одномерных массива A(n) и B(m).Верно ли,что все элементы массива B входят в массив A?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Voivoid
673 / 276 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
24.07.2014, 12:18     Где - то слышал, что в указателе сохраняется информация о размере массива, верно ли это? #2
Нет. Да
HighPredator
5464 / 1830 / 338
Регистрация: 10.12.2010
Сообщений: 5,412
Записей в блоге: 3
24.07.2014, 12:19     Где - то слышал, что в указателе сохраняется информация о размере массива, верно ли это? #3
Цитата Сообщение от SuperHero Посмотреть сообщение
Можно ли по указателю X как то явно узнать, что он ссылается на непрерывный блок памяти, в котором подряд идут 10-ть интов
Нет. Количество элементов действительно хранится по некоторому смещению относительно адреса указателя, но само это не стандартизировано. То есть формально все по разному на разных компиляторах, следовательно универсального метода нет.
Ilot
Модератор
Эксперт С++
1789 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
24.07.2014, 12:21     Где - то слышал, что в указателе сохраняется информация о размере массива, верно ли это? #4
SuperHero, распределением памяти занимается операционная система. Вот у нее и спрашивайте.
SuperHero
Заблокирован
24.07.2014, 12:23  [ТС]     Где - то слышал, что в указателе сохраняется информация о размере массива, верно ли это? #5
Цитата Сообщение от HighPredator Посмотреть сообщение
но само это не стандартизировано
а можно хоть какой пример под микрософтовский компилятор и под GCC ?

Добавлено через 1 минуту
хмм
Ilot, с каких это пор ты модератором стал ? )))
HighPredator
5464 / 1830 / 338
Регистрация: 10.12.2010
Сообщений: 5,412
Записей в блоге: 3
24.07.2014, 12:27     Где - то слышал, что в указателе сохраняется информация о размере массива, верно ли это? #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
SuperHero, я наверное не сакцентировал внимание на еще одном выводе из сказанного -- реализация подобного руками есть костыль. А костыль == bad life choice. Не делайте так. Кстати фиг его даже знает в каком типе данных каждый компиль хранит этот самый тип, при каких настройках.
SuperHero
Заблокирован
24.07.2014, 12:34  [ТС]     Где - то слышал, что в указателе сохраняется информация о размере массива, верно ли это? #7
ну тогда ещё один нубский вопрос, аллокатор new всегда же выделает непрерывный блок памяти?
1. Он выровнен?
2. Можно ли как - то создать указатель, который бы указывал на прерывающийся блок памяти? Ну то есть это к тому, чтоб удалить из массива элемент посередине без реаллокации Наверное нельзя )
HighPredator
5464 / 1830 / 338
Регистрация: 10.12.2010
Сообщений: 5,412
Записей в блоге: 3
24.07.2014, 12:39     Где - то слышал, что в указателе сохраняется информация о размере массива, верно ли это? #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от SuperHero Посмотреть сообщение
Можно ли как - то создать указатель, который бы указывал на прерывающийся блок памяти? Ну то есть это к тому, чтоб удалить из массива элемент посередине без реаллокации Наверное нельзя )
В этом случае это уже сложно будет назвать массивом по определению. Это будет некоторое подобие двунаправленного списка. Плюс нереально станет делать адресную арифметику.
SuperHero
Заблокирован
24.07.2014, 12:41  [ТС]     Где - то слышал, что в указателе сохраняется информация о размере массива, верно ли это? #9
всем спасибо всем пока )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2014, 17:44     Где - то слышал, что в указателе сохраняется информация о размере массива, верно ли это?
Еще ссылки по теме:

Верно, ли что все элементы второго массива входят в первый массив - C++
Условие задачи:Даны два массива целых чисел, длиной n и m (m<n). В каждом из них элементы различны. Верно, ли что все элементы второго...

Верно ли, что 2 массива отличаются не более, чем порядком следования членов - C++
Даны целые числа. В массиве а n-элементов и в массиве b n-элементов. Верно ли, что эти 2 массива отличаются не более, чем порядком...

Верно ли, что сумма элементов массива, которые больше 20, превышает 100 - C++
Дан массив целых чисел. Выяснить: а)верно ли, что сумма элементов, которые больше 20, превышает 100. ...

Верно ли, что сумма квадратов элементов массива есть пятизначное число? - C++
2) Верно ли, что сумма квадратов элементов массива есть пятизначное число; с использованием динамического выделения памяти. При задании...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.07.2014, 17:44     Где - то слышал, что в указателе сохраняется информация о размере массива, верно ли это? #10
Цитата Сообщение от SuperHero Посмотреть сообщение
а можно хоть какой пример под микрософтовский компилятор
Для debug в 10-й студии:
C++
1
2
3
4
5
6
    char *str = new char[10];
    cout << ((int*)(str))[-4] << endl;
 
    double* arr = new double[10];
    int* pint = (int*)arr;
    cout << pint[-4] << endl;
Yandex
Объявления
24.07.2014, 17:44     Где - то слышал, что в указателе сохраняется информация о размере массива, верно ли это?
Ответ Создать тему
Опции темы

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