C++ 为不同大小分配内存

C++ 为不同大小分配内存,c++,C++,为不同的大小分配内存。但指针的大小是相同的。有什么区别 short * v = (short*)malloc(sizeof(short)); std::cout <<"....adress.."<< sizeof(&v) <<endl; v=(short*)malloc(sizeof(short)*999); std::cout <<"....adress.."<

为不同的大小分配内存。但指针的大小是相同的。有什么区别

    short * v = (short*)malloc(sizeof(short));
    std::cout <<"....adress.."<< sizeof(&v) <<endl;

    v=(short*)malloc(sizeof(short)*999);
    std::cout <<"....adress.."<< sizeof(&v) <<endl;
两者的结果都是8。我期望999*8,如何在内存中分配999*8?

sizeof&v是指针大小,因为&v是指针大小。在64位机器上,无论该指针指向的分配内存大小如何,该值始终为8


:C++标准没有提供一种方法,当手头只有指针时,指针实际上指向的内存块是多大。

< P>内存中如何分配999×8? 你已经把电话线接好了

v=(short*)malloc(sizeof(short)*999);

v现在持有一个指向可以存储999个短消息的内存位置的指针。

sizeof在编译时运行,我想您只是看到了指针的大小。看这回答了你的问题吗?由于sizeof是在编译时执行的,因此sizeof&v相当于sizeof short**。所有这一切意味着您的程序负责记住您分配了多少,这就是为什么分配内存和使用原始指针的程序很难维护的原因。没有任何可以提供此信息的sizeof技巧。struct mystruct{char s[1];};顺便说一句,我可以看到结构的大小malloc@TonyTannous有什么例子吗?@P_uuj_u_u_u_u_u_u_u_u_u_u____________________