当前位置:  开发笔记 > 编程语言 > 正文

知道变量占用多少内存的正确方法是什么

如何解决《知道变量占用多少内存的正确方法是什么》经验,为你挑选了1个好方法。

我对指针不太熟悉,因为我主要做java,而java没有指针,现在我正在学习C++.在C++教程中,为了知道变量占用的内存大小,导师使用指向变量的指针的大小,即,

    int v = 23;
    int *p = &v;

    cout << sizeof(p) << endl;

这让我感到困惑,因为在我的第一年,我接受了C编程的教学,我将需要对变量本身做sizeof.所以我首先得出结论,他们的意思相同.但是,当我在我的电脑上尝试时,我有不同的结果.我有以下代码......

    #include 

    int main()
    {
            int *ptr = new int;
            int n = 23;

            ptr = &n;

            std::cout << sizeof(n) << std::endl;
            std::cout << sizeof(ptr) << std::endl;

            return 0;
    }

当我运行上面的代码时,我得到4和8的输出.但是我的朋友在他的机器上编译并执行了相同的代码,他输出了4和4.我不知道为什么会这样,为什么导师在指向变量的指针上使用sizeof而不是在变量本身上使用sizeof,因为他想知道该变量占用的内存量.我知道在C/C++,因为有不同的体系结构的不同存储容量的变量,至少这就是我学会了C语言,在64位机的int具有与32位机器上的不同尺寸.但我以为我的结果必须至少保持一致,即8,8或4,4我使用的是64位架构和64位操作系统,我的朋友正在使用一个32位操作系统64位架构.



1> Sourav Ghosh..:

在你的代码中,

 cout << sizeof(p) << endl;

给出变量的大小p,这是类型的变量int *.

这跟一样

cout << sizeof(*p) << endl;

要么

cout << sizeof(int) << endl;

这将给你一个int变量占用的大小.

话虽如此,只是为了澄清,要了解变量占用的大小,您需要sizeof在该变量上使用运算符,而不是指向该变量的指针.(你在第一年学到的正确的).

注意,指针的大小取决于体系结构,因此它可以变化.在某些体系结构中,指针的大小可以是32位(sizeof将返回4),在某些其他体系结构中,它可以是64位(sizeof将返回8).

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有