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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 386
#1

Как верно узнать размер указателя ? - C++

17.06.2014, 08:03. Просмотров 1220. Ответов 28
Метки нет (Все метки)

C++
1
СBaseTest* pTest[] = { new СBaseTest, new СOther };
Нужно узнать размер pTest
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2014, 08:03     Как верно узнать размер указателя ?
Посмотрите здесь:

Как узнать адрес указателя? - C++
(void *)str показывает адрес строки, а как узнать адрес указателя? char *str = "bla-bla-bla"; cout << "Value of str is: " << str <<...

Как узнать адрес указателя на char? - C++
Например, вот есть массив символов и указатель. И указателю присваиваем адрес этого массива. А как узнать адрес самого указателя? char...

Как узнать длину указателя (в байтах)? - C++
как узнать длину указателя(в байтах) sizeof(указатель)почему то не работает?

Как узнать текущее положение указателя файла? - C++
Как узнать текущее положение указателя файла в байтах?

как узнать размер строки? - C++
есть массив указателей string **str на объекта класс string; как узнать размер строки, записанной, например, в *str?

Как узнать размер массива? - C++
Нужно узнать размер введенного пользователем массива, но sizeof() почему-то не работает, помогите пожалуйста разобраться! int...

Как узнать размер массива? - C++
Имею функцию template <typename T> int funk(T mas, T element) { //kod }

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hsac
13 / 13 / 1
Регистрация: 30.06.2013
Сообщений: 157
17.06.2014, 08:06     Как верно узнать размер указателя ? #2
sizeof( pMonsters )
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
17.06.2014, 08:08     Как верно узнать размер указателя ? #3
Используйте вектор...
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 386
17.06.2014, 08:13  [ТС]     Как верно узнать размер указателя ? #4
Hsac, недопустимы не полный тип или с & или с *

0x10,а можно примерчик ? Не совсем понимаю что вы подразумеваете под использованием.
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
17.06.2014, 08:23     Как верно узнать размер указателя ? #5
Цитата Сообщение от pEntity Посмотреть сообщение
Нужно узнать размер pTest
Так ведь
C++
1
sizeof(pTest) / sizeof(СBaseTest)
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 386
17.06.2014, 08:33  [ТС]     Как верно узнать размер указателя ? #6
На СBaseTest легло, на pTest:

error C2070: СBaseTest*[]: недопустимый оператор sizeof
Заработало так и так

sizeof(&pTest) / sizeof(СBaseTest)

sizeof(*pTest) / sizeof(СBaseTest)
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
17.06.2014, 08:42     Как верно узнать размер указателя ? #7
Цитата Сообщение от pEntity Посмотреть сообщение
Заработало так и так
А ну так у вас же массив указателей... во.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
17.06.2014, 08:44     Как верно узнать размер указателя ? #8
Цитата Сообщение от pEntity Посмотреть сообщение
что вы подразумеваете под использованием
Создавать не массив указателей, а std::vector этих же указателей.
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
17.06.2014, 08:45     Как верно узнать размер указателя ? #9
Цитата Сообщение от 0x10 Посмотреть сообщение
Создавать не массив указателей, а std::vector этих же указателей.
И по хорошему shared_ptr в помощь...
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 386
17.06.2014, 08:47  [ТС]     Как верно узнать размер указателя ? #10
Просто кладя в push_back?

C++
1
2
vTest.push_back( СBaseTest );
vTest.push_back( СOther )
?

Но это вроде как я положу весь объект класса..
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
17.06.2014, 09:10     Как верно узнать размер указателя ? #11
C++03
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <vector>
 
struct A {};
struct B : public A {};
 
int main() {
    std::vector<A*> objs;
    
    objs.push_back(new A());
    objs.push_back(new B());
 
    return 0;
}
C++11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <vector>
#include <memory>
 
struct A {};
struct B : public A {};
 
int main() {
    std::vector<std::shared_ptr<A>> objs {
        std::make_shared<A>(),
        std::make_shared<B>(),
    };
    
    return 0;
}
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
17.06.2014, 09:14     Как верно узнать размер указателя ? #12
C++
1
2
3
4
5
6
7
8
#include <memory>
#include <vector>
...
std::vector<std::shared_ptr<CBase>> vector;
//vector.reserve(n);
vector.push_back(std::make_shared<CBaseTest>());
vector.push_back(std::make_shared<COther>());
...
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 386
17.06.2014, 10:17  [ТС]     Как верно узнать размер указателя ? #13
а в std::vector<std::shared_ptr<CBase>> vector;

CBase это класс родитель, то есть COther или что? Я тут написал CBaseTest

printf( "DEBUG: %d\n", vector.size );

error C3867: std::vector<_Ty>::size: в вызове функции отсутствует список аргументов; используйте "&std::vector<_Ty>::size" для создания указателя на член
1> with
1> [
1> _Ty=std::shared_ptr<CBaseTest>
1> ]
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
17.06.2014, 10:19     Как верно узнать размер указателя ? #14
Написано же:

Цитата Сообщение от pEntity Посмотреть сообщение
в вызове функции отсутствует список аргументов
vector.size()

И называть переменную именем типа - плохая идея.
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 386
17.06.2014, 15:48  [ТС]     Как верно узнать размер указателя ? #15
Так у size нет аргументов.
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
17.06.2014, 17:10     Как верно узнать размер указателя ? #16
Цитата Сообщение от pEntity Посмотреть сообщение
Так у size нет аргументов.
Методом оно от этого быть не перестает.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
17.06.2014, 21:04     Как верно узнать размер указателя ? #17
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Написано же:



vector.size()

И называть переменную именем типа - плохая идея.
Открывать неймспейс никто не заставляет
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 386
18.06.2014, 01:16  [ТС]     Как верно узнать размер указателя ? #18
Я сделал как сказал компилятор: printf( "DEBUG: %d\n", &std::vector<CBaseTest>::size );

Получил 3274627834
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.06.2014, 01:24     Как верно узнать размер указателя ? #19
size() должен объект вектора вызывать. И зачем здесь взятие адреса (&)?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2014, 01:49     Как верно узнать размер указателя ?
Еще ссылки по теме:

Как узнать размер массива - C++
В задаче нужно для решения узнать размер массива. Если sizeof() возвращает кол-во занятой памяти в байтах, и sizeof(char)=2, то ...

Размер указателя - C++
sizeof(void*);// Размер указателя на любой тип равен 8, почему так много? И можно ли как-нибудь узнать сколько под указатель выделено...

как узнать размер std::stringstream - C++
в обьект типа stringstream пишем неизвестное число байт. Как узнать сколько байт записалось в поток?

Как узнать размер папки и её подкаталогов - C++
Всем привет. Возник вопрос: &quot;Как узнать размер папки и её подкаталогов&quot; Перерыв кучу информации я понял, что напрямую узнать...

Как узнать размер объекта класса? - C++
Здравствуйте, Дамы и Господа! Есть ли функция, передающая значение количества байт, отведенных в памяти для объекта класса? Например...


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

Или воспользуйтесь поиском по форуму:
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 386
18.06.2014, 01:49  [ТС]     Как верно узнать размер указателя ? #20
Не понимаю. Покажите пример.
Yandex
Объявления
18.06.2014, 01:49     Как верно узнать размер указателя ?
Ответ Создать тему
Опции темы

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