【C】シンプルダイナミックメモリ開発(1)!!

1981 ワード

malloc関数
c言語標準ライブラリには、メモリプールでメモリ(バイト単位)を申請したい関数mallocが用意されています.1つのプログラムが別のメモリを必要とする場合、malloc関数を呼び出して適切なメモリを取得することができ、ユーザーが正常に呼び出すと、関数はメモリのアドレスを返します.注意:ここで申請に成功したメモリは初期化されていません.中にはランダムな値が保存されています.そのため、申請に成功したメモリを初期化する必要があります.
#include
#include 
#include 
int main()
{
	int *p = malloc(10*sizeof(int));      //malloc         10 int    (40  )
	int i = 0;
	for (i=0;i<10;i++)
	{
		*(p+i) = i;
	}
	for (i=0;i<10;i++)
	{
		printf("%d ",*(p+i));
	}
	free(p);                                 //free            
	memset(p,0,10*sizeof(int));              //memset               0
	return 0;
}
:malloc free ,

free

malloc ,free NULL, malloc , free , , , free ( 0)。

calloc

calloc malloc , calloc ,calloc 0. calloc , , 。

#include
#include 
#include 
int main()
{
	int *p = calloc(10,sizeof(int ));//  calloc    40        
	//int *p = malloc(10*sizeof(int));
	int i = 0;
	for (i=0;i<10;i++)
	{
		*(p+i) = i;
	}
	for (i=0;i<10;i++)
	{
		printf("%d ",*(p+i));
	}
	free(p);
	memset(p,0,10*sizeof(int));
	return 0;
}

realloc
realloc は、 に り てられたメモリを するのに しています.この を すると、このメモリを または することができます. するとき、realloc は の いメモリを き、 のメモリの のデータを しいメモリにコピーし、メモリを する に します.このとき、 すべきことは、 ろのポインタは、 に いていた メモリのアドレスを すことはできません.メモリを するときは、 じように のメモリを きますが、コピーするときは、 なメモリの のデータが り され、 りのデータが ります.