의 malloc의 기본 사용
의 malloc 함수 프로토 타입은 다음과 같습니다
void *malloc( size_t size );
- 크기 : 크기는 바이트 힙 공간을 적용하기로 약속
- 리턴 값은 타입 공극 *의 포인터, 메모리 주소는 제 수득 malloc에 복귀 공간을 할당 할 것이다
우리가 사전에 알 수 없다 malloc에 공간이 있기 때문에 형 무효 * 포인터의 사용 방법 유형에 대해 적용하는 이유. 따라서, 일반적으로 우리는 포인터 값 강한 차례를 반환해야합니다.
#include <stdlib.h>
int main(int argc, char* argv[])
{
//申请4字节的空间,作为存储int变量使用
//申请得到的空间首地址,赋值给pValue指针
int* pValue = (int*)malloc(4);
//修改值
*pValue = 0x11111111;
return 0;
}
우리는 또한 동시에 주소 공간 하나 개 이상의 요소에 적용 할 수 있습니다 :
int main(int argc, char* argv[])
{
//申请12字节的空间,作为存储3个int变量使用
//申请得到的空间首地址,赋值给pValue指针
int* pValue = (int*)malloc(12);
//修改值
*pValue = 0x11111111;
*(pValue+1) = 0x22222222;
*(pValue+2) = 0x33333333;
return 0;
}
무료 기본 사용
무료 함수 프로토 타입은 다음과 같습니다
void free( void *memblock );
당신은 볼 수없는 반환 값, 하나 개의 매개 변수를 확보 할 수 없다, 우리는 때까지 적용됩니다 힙 메모리 첫 번째 주소 확보 할 수 있습니다에 전달.
#include <stdlib.h>
int main(int argc, char* argv[])
{
//申请12字节的空间,作为存储3个int变量使用
//申请得到的空间首地址,赋值给pValue指针
int* pValue = (int*)malloc(12);
//修改值
*pValue = 0x11111111;
*(pValue+1) = 0x22222222;
*(pValue+2) = 0x33333333;
free(pValue);
return 0;
}
메모리 주소를 힙에 앞서 요구하지 않는 무료 주소로 전달한다면,주의, 오류가 발생합니다.
사용의 malloc를 sizeof와
실제로, 일반적인 사용과는 sizeof의 malloc은, 코드의 가독성을 높일 수 있습니다.
#include <stdlib.h>
int main(int argc, char* argv[])
{
//申请12字节的空间,作为存储3个int变量使用
//申请得到的空间首地址,赋值给pValue指针
int* pValue = (int*)malloc(sizeof(int)*3);
//修改值
*pValue = 0x11111111;
*(pValue+1) = 0x22222222;
*(pValue+2) = 0x33333333;
return 0;
}
메모리 누수 문제
힙 메모리뿐만 아니라 릴리스를 신청하면, 자원 누수의 원인이됩니다.
어떤 경우에는, 비표준 코드의 자원의 출시로 이어질 수 없기 때문에 :
void MyFun()
{
int* pValue = (int*)malloc(12);
//修改值
*pValue = 0x11111111;
*(pValue + 1) = 0x22222222;
*(pValue + 2) = 0x33333333;
}
int main(int argc, char* argv[])
{
MyFun();
return 0;
}