堆区使用方式
原创
©著作权归作者所有:来自51CTO博客作者黑马金牌编程的原创作品,请联系作者获取转载授权,否则将追究法律责任
堆区使用:
堆区注意事项:
- 如果在主函数中没有给指针分配内存,那么被调函数中需要利用高级指针给主调函数中指针分配内存。
代码示例:
#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;
}