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

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

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

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

24.07.2014, 12:11. Просмотров 320. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Где - то слышал, что в указателе сохраняется информация о размере массива, верно ли это? (C++):

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

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

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

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

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

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

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

Добавлено через 1 минуту
хмм
Ilot, с каких это пор ты модератором стал ? )))
HighPredator
5477 / 1843 / 343
Регистрация: 10.12.2010
Сообщений: 5,435
Записей в блоге: 3
24.07.2014, 12:27 #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
SuperHero, я наверное не сакцентировал внимание на еще одном выводе из сказанного -- реализация подобного руками есть костыль. А костыль == bad life choice. Не делайте так. Кстати фиг его даже знает в каком типе данных каждый компиль хранит этот самый тип, при каких настройках.
SuperHero
Заблокирован
24.07.2014, 12:34  [ТС] #7
ну тогда ещё один нубский вопрос, аллокатор new всегда же выделает непрерывный блок памяти?
1. Он выровнен?
2. Можно ли как - то создать указатель, который бы указывал на прерывающийся блок памяти? Ну то есть это к тому, чтоб удалить из массива элемент посередине без реаллокации Наверное нельзя )
HighPredator
5477 / 1843 / 343
Регистрация: 10.12.2010
Сообщений: 5,435
Записей в блоге: 3
24.07.2014, 12:39 #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от SuperHero Посмотреть сообщение
Можно ли как - то создать указатель, который бы указывал на прерывающийся блок памяти? Ну то есть это к тому, чтоб удалить из массива элемент посередине без реаллокации Наверное нельзя )
В этом случае это уже сложно будет назвать массивом по определению. Это будет некоторое подобие двунаправленного списка. Плюс нереально станет делать адресную арифметику.
SuperHero
Заблокирован
24.07.2014, 12:41  [ТС] #9
всем спасибо всем пока )
alsav22
5417 / 4813 / 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;
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). Верно ли, что это число содержит ровно три одинаковых цифры, как, например,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.07.2014, 17:44
Ответ Создать тему
Опции темы

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