C语言深入详解四大内存函数的使用攻略
1. malloc
函数
malloc
函数用于在堆内存中动态分配指定大小的内存空间,并返回一个指向该内存空间的指针。其函数原型如下:
void* malloc(size_t size);
使用示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
int* ptr;
int num = 5;
// 动态分配5个int类型的内存空间
ptr = (int*)malloc(num * sizeof(int));
if (ptr == NULL) {
printf(\"内存分配失败\
\");
return 1;
}
// 使用动态分配的内存空间
for (int i = 0; i < num; i++) {
ptr[i] = i + 1;
}
// 打印动态分配的内存空间中的值
for (int i = 0; i < num; i++) {
printf(\"%d \", ptr[i]);
}
// 释放动态分配的内存空间
free(ptr);
return 0;
}
2. calloc
函数
calloc
函数用于在堆内存中动态分配指定数量和大小的内存空间,并将分配的内存空间初始化为零。其函数原型如下:
void* calloc(size_t num, size_t size);
使用示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
int* ptr;
int num = 5;
// 动态分配5个int类型的内存空间,并初始化为零
ptr = (int*)calloc(num, sizeof(int));
if (ptr == NULL) {
printf(\"内存分配失败\
\");
return 1;
}
// 打印动态分配的内存空间中的值
for (int i = 0; i < num; i++) {
printf(\"%d \", ptr[i]);
}
// 释放动态分配的内存空间
free(ptr);
return 0;
}
3. realloc
函数
realloc
函数用于重新分配已经动态分配的内存空间的大小。其函数原型如下:
void* realloc(void* ptr, size_t size);
使用示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
int* ptr;
int num = 5;
// 动态分配5个int类型的内存空间
ptr = (int*)malloc(num * sizeof(int));
if (ptr == NULL) {
printf(\"内存分配失败\
\");
return 1;
}
// 使用动态分配的内存空间
for (int i = 0; i < num; i++) {
ptr[i] = i + 1;
}
// 打印动态分配的内存空间中的值
for (int i = 0; i < num; i++) {
printf(\"%d \", ptr[i]);
}
// 重新分配内存空间的大小为10个int类型
ptr = (int*)realloc(ptr, 10 * sizeof(int));
if (ptr == NULL) {
printf(\"内存分配失败\
\");
return 1;
}
// 使用重新分配的内存空间
for (int i = num; i < 10; i++) {
ptr[i] = i + 1;
}
// 打印重新分配的内存空间中的值
for (int i = 0; i < 10; i++) {
printf(\"%d \", ptr[i]);
}
// 释放动态分配的内存空间
free(ptr);
return 0;
}
4. free
函数
free
函数用于释放动态分配的内存空间,使其可以被重新使用。其函数原型如下:
void free(void* ptr);
使用示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
int* ptr;
int num = 5;
// 动态分配5个int类型的内存空间
ptr = (int*)malloc(num * sizeof(int));
if (ptr == NULL) {
printf(\"内存分配失败\
\");
return 1;
}
// 使用动态分配的内存空间
for (int i = 0; i < num; i++) {
ptr[i] = i + 1;
}
// 打印动态分配的内存空间中的值
for (int i = 0; i < num; i++) {
printf(\"%d \", ptr[i]);
}
// 释放动态分配的内存空间
free(ptr);
// 尝试使用已释放的内存空间
for (int i = 0; i < num; i++) {
printf(\"%d \", ptr[i]);
}
return 0;
}
以上是关于C语言中四大内存函数的详细讲解和使用攻略,希望对你有帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言深入详解四大内存函数的使用 - Python技术站