堆区使用:

  • 在堆区开辟的数据,记得手动开辟,手动释放

堆区注意事项:

  • 如果在主函数中没有给指针分配内存,那么被调函数中需要利用高级指针给主调函数中指针分配内存。

代码示例:

#define
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int * getSpace()
{
int *p = malloc(sizeof(int*) * 5);
if (p == NULL)
{
return NULL;
}
for (int i = 0; i < 5; i++)
{
p[i] = i + 100;
}
return p;
}
void test01()
{
int*p = getSpace();
for (int i = 0; i < 5; i++)
{
printf("%d\n",p[i]);
}
//手动在堆区创建的数据,记得手动释放
free(p);
p = NULL;
}
//注意事项
//如果主调函数中没有给指针分配内存,被调函数用同级指针是修饰不到主调函数中的指针
void allocateSpace(char*pp)
{
char*temp = malloc(100);
if (temp == NULL)
{
return;
}
memset(temp,0,100);
strcpy(temp,"hello world");
pp = temp;
}
void test02()
{
char*p = NULL;
allocateSpace(p);
printf("%s\n", p);
}
void allocateSpace2(char**pp)
{
char*temp = malloc(100);
memset(temp,0,100);
strcpy(temp,"hell world");
*pp = temp;
}
void test03()
{
char*p = NULL;
allocateSpace2(&p);
printf("%s\n", p);
}
int main()
{
//test02();
test03();
return EXIT_SUCCESS;
}