C中的内存分为三类:栈区、堆区、静态数据区。
局部变量放置在堆栈上。函数调用前的堆栈指针必须与函数返回后的堆栈指针相同,否则会出错。
voidtest(void)
{
chari,a[10];
printf("0x%x",&i);
printf("0x%x",a);
printf("0x%x",a+1);
printf("0x%x",a+2);
printf("0x%x",a+3);
扩展信息
C语言数组内存分配
示例:
#include
intmain()
{
inta[4]={11,12,13,14};
intb[4]={21,22,23,24};
int*pa=&a;
inti=0;
while(i<8)
{
i++;
printf("now*pvalue=%dand",*pa);
printf("paddrvalue=%d\n",pa);
pa++;
return0;
1.静态存储区域分配
内存分配在程序编译前完成,存在于整个程序执行期间,包括全局变量和静态变量。。
2.栈上分配
函数执行时,如果在栈上创建了函数内局部变量的存储单元,则这些存储设备会在函数执行时自动释放结束。
3.堆分配
堆分配(也称为动态内存分配)。当程序运行时,它使用malloc或new来访问内存,并使用free或delete来释放它。
扩展信息
在堆栈上分配数组
#include
usingnamespacestd;
voidmain()
{
int**arr=NULL;//int类型二维数组
inside,column;
>row;//2>column;//3//这里写代码,根据行列在栈上分配数组arr。
...代码...
//给数组元素赋值
for(introwIndex=0;rowIndex { for(intcolumnIndex=0;columnIndex { arr[rowIndex][columnIndex]=columnIndex+(rowIndex+1)*1000+1; } } //打印每个数组元素 for(rowIndex=0;rowIndex { for(intcolumnIndex=0;columnIndex { printf("%d",arr[行索引][列索引]); } printf("\n"); } }
上一篇:内存分配的三种方式
下一篇:数组在内存中分配存储空间