怎么通过动态内存分配malloc
时间: 2024-10-10 15:04:33 浏览: 32
动态内存分配是一种在程序运行过程中根据需要申请内存空间的技术,最常用的是C/C++中的`malloc()`函数。当你需要创建一个不确定大小的对象或数组,而又希望在运行时确定其大小时,可以使用`malloc()`。
`malloc(size)`函数接收一个整型参数`size`,表示要请求分配的字节数,然后返回指向新分配内存的指针。例如,如果你想创建一个能容纳任意数量`Person`结构体的数组:
```c
#include <stdlib.h>
struct Person {
char name[20];
int age;
};
int main() {
int n; // 用户输入想要多少人
printf("Enter the number of people: ");
scanf("%d", &n);
struct Person* people = (struct Person*) malloc(n * sizeof(struct Person)); // 分配内存
if (people == NULL) { // 检查是否成功分配
perror("Memory allocation failed");
return 1;
}
// 现在你可以按照n来存储Person结构,比如填充名字和年龄
for(int i = 0; i < n; i++) {
people[i].name = "Person" + i; // 假设这里只是示例,实际应用应从用户输入或其他合适来源获取名称
people[i].age = i + 20; // 同理,设置年龄
}
// 使用完后别忘了释放内存
free(people);
return 0;
}
```
在这个例子中,我们先读取用户输入的`n`,然后用`malloc()`分配足够的空间存储`n`个`Person`结构体。结束使用后记得用`free()`函数释放内存,防止内存泄漏。
阅读全文