Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Размер памяти в указателе


Автор: yngwie19 24.4.2009, 08:52
Здравствуйте скажите возможно ли узнать размер памяти, на которую указывает переменная-указатель?

Автор: mrbrooks 24.4.2009, 08:57

Код

double *d, d1 = 2154.874574;
d = &d1;
std::cout << sizeof(*d); // <- 8 байт

Автор: azesmcar 24.4.2009, 09:01
yngwie19

смотря что это означает
Код

int* p;
std::cout << sizeof(*p); //размер

если тип неизвестен - ответ нет.
Код

void* p;
std::cout << sizeof(*p); //не сработает

если обьект на который указывает указатель - какой нибудь класс например, который хранит другие указатели
Код

class A
{
public:
    A() {
        v = new char[1000];
    }
    char *v;
};

int main()
{
    A* p;
    std::cout << sizeof(*p);
}

мы получим для класса размер указателя char *v

Автор: math64 24.4.2009, 09:33
Официально - никак
Код

char* p = "hello!";
std::cout << sizeof(*p); // Вернёт 1, а не strlen(p) + 1  = 7
class A { int i; };
class B : public A { int j; };
A* a = new B();
std::cout << sizeof(*a); // Вернёт sizeof(A)=4, а не sizeof(B) = 8

Автор: mes 24.4.2009, 09:44
для ряда случаев подойдет :
http://forum.vingrad.ru/index.php?showtopic=253934&view=findpost&p=1831345
а вообще не помешало бы ознакомится и с другими высказываниями той теме smile




Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)