数组如何定义才是最好的?
有2中定义数组的方法
一个是:
char a[100];
一个是
char *a=new char[100];
那种速度比较快?有什么区别?是不是第一种方法是在程序启动的时候创建,另一个是在运行的时候创建?
[解决办法]
静态数组在程序运行之前已经创建好了,当然效率高
动态数组涉及了堆内存的分配,释放,运行时动态创建,效率低,内存回收人工的执行
但是灵活,可以根据所需合适的分配内存,不会造成内存浪费
[解决办法]
第一种是在堆栈上分配,速度快,分配和释放都只要对堆栈指针进行加减即可,不过会占用堆栈空间,windows的一个线程的堆栈大小只有2m,千万不要在堆栈上分配一个很大的数组。
第二种是运行期间通过操作系统分配内存,速度稍慢,可分配大小比较大,win32系统最大可以分配到 2G左右,需要自己管理(当然,就算自己不去释放,操作系统在程序结束后也会去释放,但别这么做)。
-------------------
这么说非动态生成的内存,不是在程序结束后释放的?而是在生存期结束后系统就释放了?
这种说法对么?
-------------------
对的!