데이터 구조 - 순서 표 소각
//
#include
#include
#define OK 1
#define OVERFLOW -2
#define LIST_INIT_SIZE 10//
typedef int Status; //Status , , OK
typedef int ElemType;//ElemType
typedef struct{
ElemType *elem;
int length;
int listsize;
}Sqlist;
Status InitList(Sqlist &L)
{//
// L.elem=new ElemType[MAXSIZE];// MAXSIZE [ L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));]
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));//L.elem malloc Elemtype size*LIST_INIT_SIZE
//malloc size
if(!L.elem)exit(OVERFLOW);//
L.length=0;// 0
L.listsize=LIST_INIT_SIZE; //
return OK;
}
int main(){
Sqlist L;
InitList(L);
free(L.elem);//
L.elem=NULL;
L.length=0;
L.listsize=0;
printf(" L :L.elem=%u L.length=%d L.listsize=%d
",L.elem,L.length,L.listsize);
}
1. * L. elem = NULL 과 free 함수 의 차이 * L. elem = NULL 은 포인터 의 방향 을 수정 하여 메모리 에 있 는 데 이 터 를 소각 하지 않 았 습 니 다.free 는 데 이 터 를 삭 제 했 지만 지침 을 수정 하지 않 았 습 니 다.우선, 지침 은 메모리 의 어떤 주 소 를 가리킨다.그래서 첫 번 째 문 구 는 이 포인터 가 가리 키 는 주 소 를 0, 즉 NULL 로 수정 하 는 것 입 니 다.그 다음으로 동적 분배 메모리 malloc 는 메모리 더미 위 에 메모리 공간 을 열 어 주 는 것 이다.보통 메모리 에 접근 할 수 없 는 지침 을 사용 합 니 다.free 는 포인터 가 가리 키 는 malloc 에서 열 린 메모 리 를 방출 하 는 데 사 용 됩 니 다.그래서 free 와 malloc 는 짝 을 지어 사용 합 니 다.malloc 의 메모리 가 있 으 면 포인터 에 NULL 을 직접 할당 하면 나중에 이 메모 리 를 사용 할 수 없습니다.이 부분의 메모리, 즉 메모리 유출 을 다시 이용 할 수 없 게 된다.물론 같은 메모리 에 여러 번 free 를 사용 할 수 는 없다. 그것 도 잘못된 것 이다.일반적으로, 실수 가 다시 풀 리 지 않도록 free 메모리 방출 을 실행 하고, 값 을 NULL 로 할당 합 니 다.
예:
free(L.elem);// free , NULL
L.elem=NULL;
L.length=0;
L.listsize=0;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.