C语言中的变量分配了内存存储空间吗

Python021

C语言中的变量分配了内存存储空间吗,第1张

C语言中的变量分配了相应类型的内存存储空间

比方说int

a分配了一个存储int的空间。

int

*p则是分配了一个指向int的指针的存储空间。

内存分配方式有三种:

1、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。

2、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

3、从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由程序员决定,使用非常灵活,但如果在堆上分配了空间,就有责任回收它,否则运行的程序会出现内存泄漏,频繁地分配和释放不同大小的堆空间将会产生堆内碎块。

你的问题没有一个现成的函数供你使用。

必须经历以下三步曲:

1.申请新的空间

2.移动原空间中的数据到新空间

3.释放原空间

C++中有STL所以你如果讨厌这样无聊的三步曲的话可以用vector代替数组。

另外C语言中是没有new的C++中有。而从楼主的出错提示看楼主应该用的是TC所以不会存在关键字的问题。

realloc在C++中是没有的。

另外告诉你个小技巧:在C++的STL中使用了内存池技术即一次申请一个适量的空间自己管理以避免系统管理内存带来的效率上的损失。具体的可以看STL的源代码最好好似SGI版的其他版本是没内存池技术的。