C指针开辟内存空间

2025-10-29 05:42:31      世界杯巴西克罗地亚

C指针开辟内存空间

动态内存管理方式一:动态开辟内存方式二:动态开辟内存

动态内存管理

使用malloc,calloc函数动态开辟内存空间,但要注意使用后要使用free函数进行释放。

方式一:动态开辟内存

#include

int* getSpace()

{

//开辟5个连续的int大小的内存

int* p = malloc(sizeof(int) * 5);

if (p == NULL)

{

return;

}

//赋值

for (int i = 0; i < 5; i++)

{

p[i] = i + 100;

}

//返回开辟好的内存指针

return p;

}

void test()

{

int* p = getSpace();

for (int i = 0; i < 5; i++)

{

printf("%d\n", p[i]);

}

//手动开辟 手动释放

free(p);

//避免出现野指针

p = NULL;

}

方式二:动态开辟内存

//高一级的指针

void allocateSpace(char** pp)

{

//开辟100个内存

char* temp = malloc(100);

//全部赋值为0

memset(temp, 0, 100);

//复制"hello world"到temp

strcpy(temp, "hello world");

*pp = temp;

}

void test()

{

char* p = NULL;

allocateSpace(&p);

printf("%s\n", p);

if (p != NULL)

{

free(p);

p = NULL;

}

}

给指针进行开辟内存时,被调函数不能使用同级指针,要使用指针的地址(高一级的指针),被调函数接收这个地址后再进行内存开辟。即 主调函数没有分配内存,被调函数需要用更高级的指针去修饰低级指针,进行分配内存

以下方式错误

void allocateSpace(char* pp)

{

char* temp = malloc(100);

memset(temp, 0, 100);

strcpy(temp, "hello world");

pp = temp;

}

世界杯“客队”先开球惊现90%概率,裁判疑被操纵?
改善交通问题的建议