高级语法内存管理结构联合体.pdf
heap空间操作
二级指针对应的heap空间
int**p=int*p[3][int*,int*,int*][[1,2,3,54,5],int*,int*]
1intmain(void)
2{
3//给外层空间malloc申请内存
4int**pmalloc(sizeof(int*)*3);
5if(pNULL)
6{
7printf(mallocerror!\n);
8return-1;
9}
10//给内层指针申请malloc空间
11for(size_ti0;i3;i++)
12{
13p[i]malloc(sizeof(int)*5);
14if(p[i]NULL)
15{
16printf(mallocp[i]error!\n);
17return-1;
18}
19}
20//使用空间--写
21for(size_ti0;i3;i++)
22{
23for(size_tj0;j5;j++)
24{
25p[i][j]i+j;//随意初始化值。
26}
27}
28//使用空间--读
29for(size_ti0;i3;i++)
30{
31for(size_tj0;j5;j++)
32{
33printf(%d,*(*(p+i)+j));
//p[i][j]*(p+i)[j]*(*
(p+i)+j)
34}
35printf(\n);
36}
37
38//free空间时,应该先释放内层空间,再释放外层
39for(size_ti0;i3;i++)
40{
41free(p[i]);
42p[i]NULL;
43}
44
45//释放外层空间
46free(p);
47pNULL;
48
49system(pause);
50returnEXIT_SUCCESS;
51}
以char**p为例
1//先申请外层指针。
2char**pmalloc(sizeof(char*)*5);
3//申请内层指针
4for(inti0;i5;i++)
5{
6
p[i]malloc(sizeof(char)*10);
//字符串长度=10个字符。
7}
8//写
9for(inti0;i5;i++)
10{
11
/