【1】malloc
void* malloc (size_t size);
void free (void* ptr);
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num=0;
scanf("%d",&num);
int* ptr = NULL;
ptr = (int*)malloc(num * sizeof(int));
if (NULL != ptr)
{
int i = 0;
for (i = 0; i < num; i++)
{
*(ptr + i) = 0;
}
}
free(ptr);
ptr = NULL;
system("pause");
return 0;
}
【2】calloc
返回地址之前把申请的空间的每个字节初始化为全0;
void* calloc (size_t num, size_t size);
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p =(int *) calloc(10, sizeof(int));
if (NULL != p)
{
free(p);
p = NULL;
return 0;
}
system("pause");
return 0;
}
【3】realloc
void* realloc (void* ptr, size_t size);
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num = 4;
int* ptr = NULL;
ptr = (int*)malloc(num * sizeof(int));
if (NULL != ptr)
{
int i = 0;
for (i = 0; i < num; i++)
{
*(ptr + i) = 0;
}
}
int*p = NULL;
p =(int *)realloc(ptr, 1000);
if (p != NULL)
{
ptr = p;
}
free(ptr);
system("pause");
return 0;
}
【4】free释放
void test()
{
int a = 10;
int *p = &a;
free(p);//对于非动态开辟内存不能使用free释放
}
void test()
{
int *p = (int *)malloc(100);
p++;
free(p);//不能释放动态开辟内存的一部分
void test()
{
int *p = (int *)malloc(100);
free(p);
free(p);//不能重复释放
}
void test() //不能忘记释放
{
int *p = (int *)malloc(100);
if(NULL != p)
{
*p = 20;
}
}
int main()
{
test();
while(1);
}