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

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

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

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

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

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

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

Где в текстовом файле хранится информация об имени файла, шрифте, его начертании и размере? - Администрирование Windows
Здравствуйте. Допустим имеется стандартный текстовый файл 1.txt, в котором записана обычная текстовая информация. Если открыть этот файл в...

Верно ли, что переменная - это свойство глобального объекта? - JavaScript
Я так понял что переменная это свойство глобального объекта,это так? Вопрос такой: Но так ведь любая переменная базового типа это...

Информация во время загрузки. Что бы это значило? - Жесткие диски
Здравствуйте! При запуске компьютера сначала надолго появляется картинка МП, затем непонятное мне окно, потом опять картинка МП, затем...

Верно ли, что функция - это метод который возвращает значение - C#
Здраствуйте уважаемые знатоки :). Я читаю уже не одну статью про методы и функции. И у меня снова поменялось мнение о том чтоже такое...

QDir. Информация о размере файлов каждого типа - C++ Qt
Есть папка. Нужно узнать, сколько занимают места файлы каждого расширения (и в подпапках тоже). Есть идея получить список всех файлов, а...

Верно ли, что это цисло содержит ровно три одинаковые цифры - Turbo Pascal
Дано натуральное число n (n ≤ 9999).Верно ли, что это цисло содержит ровно три одинаковые цифры, как, например, числа 6676, 4544, 0006 и...

9
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
24.07.2014, 12:18 #2
Нет. Да
0
HighPredator
5541 / 1854 / 346
Регистрация: 10.12.2010
Сообщений: 5,472
Записей в блоге: 2
24.07.2014, 12:19 #3
Цитата Сообщение от SuperHero Посмотреть сообщение
Можно ли по указателю X как то явно узнать, что он ссылается на непрерывный блок памяти, в котором подряд идут 10-ть интов
Нет. Количество элементов действительно хранится по некоторому смещению относительно адреса указателя, но само это не стандартизировано. То есть формально все по разному на разных компиляторах, следовательно универсального метода нет.
1
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
24.07.2014, 12:21 #4
SuperHero, распределением памяти занимается операционная система. Вот у нее и спрашивайте.
0
SuperHero
Заблокирован
24.07.2014, 12:23  [ТС] #5
Цитата Сообщение от HighPredator Посмотреть сообщение
но само это не стандартизировано
а можно хоть какой пример под микрософтовский компилятор и под GCC ?

Добавлено через 1 минуту
хмм
Ilot, с каких это пор ты модератором стал ? )))
0
HighPredator
5541 / 1854 / 346
Регистрация: 10.12.2010
Сообщений: 5,472
Записей в блоге: 2
24.07.2014, 12:27 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
SuperHero, я наверное не сакцентировал внимание на еще одном выводе из сказанного -- реализация подобного руками есть костыль. А костыль == bad life choice. Не делайте так. Кстати фиг его даже знает в каком типе данных каждый компиль хранит этот самый тип, при каких настройках.
1
SuperHero
Заблокирован
24.07.2014, 12:34  [ТС] #7
ну тогда ещё один нубский вопрос, аллокатор new всегда же выделает непрерывный блок памяти?
1. Он выровнен?
2. Можно ли как - то создать указатель, который бы указывал на прерывающийся блок памяти? Ну то есть это к тому, чтоб удалить из массива элемент посередине без реаллокации Наверное нельзя )
0
HighPredator
5541 / 1854 / 346
Регистрация: 10.12.2010
Сообщений: 5,472
Записей в блоге: 2
24.07.2014, 12:39 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от SuperHero Посмотреть сообщение
Можно ли как - то создать указатель, который бы указывал на прерывающийся блок памяти? Ну то есть это к тому, чтоб удалить из массива элемент посередине без реаллокации Наверное нельзя )
В этом случае это уже сложно будет назвать массивом по определению. Это будет некоторое подобие двунаправленного списка. Плюс нереально станет делать адресную арифметику.
1
SuperHero
Заблокирован
24.07.2014, 12:41  [ТС] #9
всем спасибо всем пока )
0
alsav22
5425 / 4820 / 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;
0
24.07.2014, 17:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2014, 17:44
Привет! Вот еще темы с ответами:

Верно ли, что это число содержит ровно три одинаковые цифры? - Turbo Pascal
Дано натуральное число n (n ≤ 9999). Верно ли, что это число содержит ровно три одинаковые цифры, как, например, числа 6676, 4544, 0006...

Верно ли, что это число содержит ровно три одинаковые цифры? - Turbo Pascal
Дано натуральное число n (n ≤ 9999). Верно ли, что это число содержит ровно три одинаковые цифры, как, например, числа 6676, 4544, 0006 и...

Верно ли, что entity framework - это настройка над ADO.NET - C#
Сталкнулся на собесодовании с таким вопросом.Собедующий сказал что entity framework настройка над ado.net. Я сказал что это часть...

Верно ли, что это число содержит ровно три одинаковых цифры - C++ Builder
Помогите сделать .Дано натуральное число n (n&lt;=9999). Верно ли, что это число содержит ровно три одинаковых цифры, как, например,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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