C++ 最小化所使用的内存

C++ 最小化所使用的内存,c++,pointers,memory,C++,Pointers,Memory,我有一个疑问,因为我们知道指针是一个存储地址的变量。 我可以使用 cin>>(*p); 不使用任何其他正态变量。 下面的代码对此进行了解释: #include'iostream' int main() { long long *p; cin>>(*p); cout<<(*p); return 0; } #包括“iostream” int main() { long*p; cin>>(*p); cout指针有一个未定义的值,因

我有一个疑问,因为我们知道指针是一个存储地址的变量。 我可以使用

cin>>(*p);
不使用任何其他正态变量。 下面的代码对此进行了解释:

#include'iostream'
int main()
{
    long long *p;
    cin>>(*p);
    cout<<(*p);
    return 0;
}
#包括“iostream”
int main()
{
long*p;
cin>>(*p);

cout指针有一个未定义的值,因此任何试图在该地址写入的行为都将导致未定义的行为

更好:

int main()
{
    long long *p = new long long();  // heap allocation
    cin>>(*p);
    cout<<(*p);
    delete p;
    return 0;
}
intmain()
{
long long*p=new long();//堆分配
cin>>(*p);
coutp;
cout
希望这张照片能更好地解释

左列使用以下代码:

int main() {
    long long p;
    std::cin >> p;
    std::cout << p;
}
它为32位计算机上的指针分配4个字节,或为64位计算机上的指针分配8个字节。当您使用指针时,必须为其分配一个内存位置以存储数据,因此它将在堆上为long-long类型分配另外8个字节的内存。因此后一个类型使用更多内存


为了获得更好的内存效率,你应该坚持使用
long-long p
,避免使用指针,而且为指针分配和释放内存的速度很慢。

你对指针的理解是非常误导的。花一周的时间读几本好书。实际上,你有很多内存。重点不是要保存它,而是t明智地使用它。使用指针实际上会占用更多内存,因为
long
(通常为8字节)和指针值(通常为4或8字节)需要空间这种编码不会节省内存,通常会使代码变得更糟,而且完全是浪费时间。@vu1p3n0x但所有指针变量占用的内存量相同。不是8字节,而是4字节,这也取决于机器。据我所知。如果我错了,请纠正我。@BasileStarynkevitch你能给我推荐任何书籍或视频tut。获得m吗y概念在指针中非常清晰。Thanks!使用
new
只会更好,因为至少它不是UB,但对于boy,我不建议向一个显然是完全初学者的人展示这一点。此外,你不能忘记
delete
,否则内存会泄漏。更好的是,使用智能指针。甚至更好的是,d别把指针弄乱了。
int main() {
    long long p;
    std::cin >> p;
    std::cout << p;
}
int main() {
    long long *p = new long long();
    std::cin >> *p;
    std::cout << *p;
    delete p;
}