c语言中malloc函数使用实例
时间: 2023-08-16 11:07:39 浏览: 51
malloc函数是C语言中用来动态分配内存的函数,以下是一个使用malloc函数的示例:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr;
int n = 5;
ptr = (int*) malloc(n * sizeof(int)); // 分配5个整数大小的内存空间
if (ptr == NULL) { // 检查是否分配成功
printf("内存分配失败");
exit(1);
}
for (int i = 0; i < n; i++) {
*(ptr + i) = i + 1; // 给每个内存空间赋值
}
printf("分配的内存空间中的值:\n");
for (int i = 0; i < n; i++) {
printf("%d ", *(ptr + i)); // 输出每个内存空间的值
}
free(ptr); // 释放内存
return 0;
}
```
在这个示例中,首先声明了一个指针变量`ptr`,然后使用`malloc`函数分配了5个整数大小的内存空间,并将指针变量`ptr`指向这块内存空间。接着,使用循环给每个内存空间赋值,并输出每个内存空间的值。最后,使用`free`函数释放内存空间。
相关问题
c语言malloc二维字符串数组,详解C语言用malloc函数申请二维动态数组的实例
使用malloc函数申请二维动态数组需要注意以下几点:
1. 二维数组在内存中的存储是连续的一片区域,因此需要先分配一维数组的空间,再为每个一维数组分配空间。
2. 为了方便起见,可以先通过一维数组的形式定义二维数组的行和列。
下面是一个示例程序,演示如何使用malloc函数申请二维字符串数组:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i, j, rows, cols;
char **str_array;
printf("Enter the number of rows: ");
scanf("%d", &rows);
printf("Enter the number of columns: ");
scanf("%d", &cols);
// 分配一维数组的空间
str_array = (char **) malloc(rows * sizeof(char*));
// 分配每个一维数组的空间
for(i = 0; i < rows; i++)
{
str_array[i] = (char *) malloc(cols * sizeof(char));
}
// 输入字符串数组
printf("Enter the strings:\n");
for(i = 0; i < rows; i++)
{
scanf("%s", str_array[i]);
}
// 输出字符串数组
printf("The strings are:\n");
for(i = 0; i < rows; i++)
{
printf("%s\n", str_array[i]);
}
// 释放空间
for(i = 0; i < rows; i++)
{
free(str_array[i]);
}
free(str_array);
return 0;
}
```
这个程序首先要求用户输入二维数组的行和列,然后使用malloc函数分配一维数组和每个一维数组的空间。接下来,程序允许用户输入字符串数组,并输出结果。最后,程序释放动态分配的内存。
需要注意的是,在释放空间时,需要先释放每个一维数组的空间,再释放一维数组的空间。这是因为每个一维数组的空间是通过malloc函数分配的,因此必须先释放它们的空间,否则可能会导致内存泄漏。
malloc函数实例
malloc函数是C语言中用于动态分配内存的函数。它的原型定义在stdlib.h头文件中,函数的作用是在堆内存中分配指定大小的连续内存块,并返回该内存块的首地址。
下面是一个malloc函数的实例:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int size;
int* ptr;
printf("请输入要分配的内存大小(以字节为单位):");
scanf("%d", &size);
// 使用malloc函数动态分配内存
ptr = (int*)malloc(size);
if (ptr == NULL) {
printf("内存分配失败!\n");
return 1;
}
printf("内存分配成功!\n");
// 使用分配的内存
for (int i = 0; i < size / sizeof(int); i++) {
ptr[i] = i + 1;
}
// 打印分配的内存内容
printf("分配的内存内容为:");
for (int i = 0; i < size / sizeof(int); i++) {
printf("%d ", ptr[i]);
}
printf("\n");
// 释放内存
free(ptr);
return 0;
}
```
在上述示例中,我们首先通过`scanf`函数获取用户输入的内存大小,然后使用`malloc`函数动态分配指定大小的内存块,并将返回的指针赋值给`ptr`变量。接着,我们使用分配的内存块进行操作,最后使用`free`函数释放内存。