Thinking in C++ ---- Memory Allocation
来源:互联网 发布:tplink tl wn725n mac 编辑:程序博客网 时间:2024/06/08 04:35
C++ lecture has finished, and tomorrow we'll have our exam. Through this period, I find I learnt a lot and finally felt in love with programming.
It's the best time to review the knowledge and think about it.
The followings are my understandings:
Memory Allocation
We should tell stack and heap apart.
Stack is the place to place normal variables. Normal variables, I mean, are the variables we use most, like "int a", "double b", "Animal ani"...
Heap is the place to place dynamic variables, this kind variable is created by using "new" operator, like "new int()", "new Animal()"...
Let's think about an example:
int *ptr = new int();Here, ptr is a pointer which belongs to normal variables, so it is stored in stack. Yet, the content the pointer points to is created by "new" operator, so it is stored in heap.
Let's think about it more clearly with pics:
Part 1 stack only:
Here, i, j and object are all normal variables, so they are stored in stack.
Now, we enter fun2(), and fun2() has a normal variable "object", so it is also stored in stack.
Now, we exit fun2(), so the object created when we entered fun2() is deleted from stack.
Finally, we exit the main() function, so all variables created when we entered main() is deleted from stack.
In conclusion: stack-resident is the object created automatically when the program is executed and cleaned when the program is over.
Part 2 Heap and Stack
we can see the pointer is stored in stack, but the content of the pointer created by "new" operator is stored in heap.
Now, we exit the main() function, so all variables in stack are removed, but the object in heap cannot be removed automatically in C++. (In java, it can be removed)
What if we add "delete object" in our code?
Before we exiting from the main() function, we delete the object stored in heap manually by using "delete".
Finally, all variables are removed.
Reference: The pics are from my teacher's lecture material.
- Thinking in C++ ---- Memory Allocation
- Memory Allocation in C++/C
- C++: Custom memory allocation
- exercise for memory-allocation functions in c run-time library
- [转载]Dynamic Memory Allocation and Fragmentation in C and C++
- Secure Coding Best Practices for Memory Allocation in C and C++
- Secure Coding Best Practices for Memory Allocation in C and C++
- Secure Coding Best Practices for Memory Allocation in C and C++
- Secure Coding Best Practices for Memory Allocation in C and C++
- Memory Allocation
- Thinking in C++(1)
- Thinking in C++(2)
- Thinking in C++(3)
- Thinking in C++(4)
- Thinking in C
- Just Thinking In C
- <<Thinking in C++>>读中感
- Thinking in C++(1)
- 推导坐标旋转公式
- thinkcmf-使用笔记
- android 多线程Thread,Runnable,Handler,AsyncTask等之间的关系
- ubuntu12.04 AMD64 network_manager 网络配置软件源(ubuntu无法联网)
- 第一个 Django Project开发
- Thinking in C++ ---- Memory Allocation
- hdu1171
- 机顶盒mount不到虚拟机的解决方法
- addEventListener用法
- 函数调用分析
- drupal7自带body编辑+IMCE实现图片上传
- LINK
- VS动态库提示找不到对话框资源标示符
- Android标题样式自定义