网上总结到的信息:
(1) 静态分派:是在栈上分配,是由用户自己申请,是由操作系统自己释放的
动态分配:是由编译器分配,操作系统没有提供这种机制,所以自己申请,必须自己删除!(4) 动态分配效率比较低,不过容量跟用户需求有关。
(5)C语言里面用malloc和free,C++里面用new 和delete。
(6)malloc要求穿进去一个分配内存大小的参数,还怎么动态呢?
看下面的例子:
#include <iostream> #include <string> #include <cstdlib> using namespace std; void main() { int* p; p=(int*)malloc(sizeof(int)*10); for(int i=0;i<11;i++) { *(p+i)=i; } for(int i=0;i<11;i++) cout<<*(p+i)<<" "; system("pause"); }
说明:即使用malloc分配了10个int大小的空间,也可以动态的给第11个int赋值,实现内存的动态扩展,用静态内存分配int num[10]将不能完成。
原文地址:http://blog.csdn.net/xiqingnian/article/details/41130097