富途证券C++面试题及参考答案

C++ 中堆和栈的区别

在 C++ 中,堆和栈是两种不同的内存区域,它们有许多区别。

从内存分配方式来看,栈是由编译器自动分配和释放的内存区域。当一个函数被调用时,函数内的局部变量、函数参数等会被压入栈中,这些变量的内存空间在函数执行结束后会自动被释放。例如,在下面的函数中:

void func() {
    int a = 5; 
    // 这里的变量a存储在栈中,当func函数结束后,a所占用的栈空间会自动释放
}

而堆是由程序员手动分配和释放的内存区域,使用newmalloc等操作符来分配内存。比如:

int* p = new int;
// 这里在堆上分配了一个int类型大小的空间,并且返回指向这个空间的指针p

释放堆内存需要使用delete(对于new分配的内存)或者free(对于malloc分配的内存)。如果忘记释放堆内存,就会造成内存泄漏。

从内存生长方向上,

你可能感兴趣的:(c++,java,后端面试,大厂面试,Epoll,智能指针,数据库索引)