C 언어에서 동적 메모리 할당을 구현하는 방법
C언어에서 동적 메모리 할당을 구현하는 방법
우리는 프로그램을 위해 메모리 공간을 미리 열어두고 운영하는 경우가 많습니다.
int arr[5] ;
이 배열의 경우 정의할 때 미리 공간을 열어두어야 하며, 프로그램 실행 중에 이 할당된 메모리 공간은 함수가 완료될 때까지 공간이 해제되지 않는 한 항상 존재하게 됩니다. 한 가지 문제는 이 배열을 프로그램에서 수정할 수 없다는 것입니다.
이러한 문제로 인해 사용에 불편함이 있어 C에서는 malloc() 함수를 제공하고 있습니다.
malloc() 함수와 관련하여 이 함수는 하나의 매개변수, 즉 필요한 메모리 바이트 수를 허용합니다. 그런 다음 malloc()은 사용 가능한 메모리에서 적절한 크기의 블록을 찾습니다. 이 프로세스에서 malloc()은 해당 메모리의 첫 번째 바이트 주소를 반환할 수 있습니다. 즉, 포인터를 사용하여 작업할 수 있다는 의미입니다. malloc()은 배열 포인터, 구조체 포인터 등을 반환하는 데 사용할 수 있으므로 반환 값의 유형을 적절한 유형에 할당해야 합니다. malloc()이 필요한 공간을 찾을 수 없으면 널 포인터를 반환합니다.
예:
추천 학습: c 언어 비디오 튜토리얼
double *p; p=(double*)malloc(30*sizeof(double));
이 프로그램에서는 먼저 이중 문자 공간 30개를 열고 p가 이 공간의 위치를 가리킵니다. 여기의 포인터는 첫 번째 double 값을 가리킵니다. 우리가 열어놓은 30개의 이중 공간이 전부는 아닙니다. 이는 배열과 같습니다. 배열에 대한 포인터는 전체 배열의 요소가 아닌 배열의 첫 번째 요소 주소를 가리킵니다. 따라서 여기서의 작업은 배열의 경우와 동일합니다.
p[0]은 첫 번째 요소이고 p[1]은 두 번째 요소입니다.
이제 동적 배열을 선언하는 방법을 익힐 수 있습니다.
int arr[n]; p=(int *)malloc(n*sizeof(int)); //我们在这里使用的时候要元素个数乘类型字节长度,这样就达到了动态开辟内存空间。
malloc()을 사용하여 메모리 공간을 연 후에 고려해야 할 것은 메모리 공간을 해제하는 것뿐입니다. 여기서 C는 free() 함수를 제공합니다. free()의 매개변수는 이전 malloc() 함수에 의해 열린 공간을 해제하는 malloc() 함수에 의해 반환된 주소입니다.
예:
위에서 열었던 공간을 해제하려면 이렇게 하면 됩니다.
free(p);
프로그램은 또한 메모리 할당이 실패할 때 프로그램을 종료하는 exit() 함수를 호출합니다.
프로그램 예:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<malloc.h>//malloc()函数被包含在malloc.h里面 #include<stdlib.h> int main(void) { char*a = NULL;//声明一个指向a的char*类型的指针 a = (char*)malloc(100 * sizeof(char));//使用malloc分配内存的首地址,然后赋值给a if (!a)//如果malloc失败,可以得到一些log { perror("malloc"); return-1; } sprintf(a, "%s", "HelloWorld\n");//"HelloWorld\n"写入a指向的地址 printf("%s\n", a);//输出用户输入的数据 free(a);//释放掉使用的内存地址 system("pause"); return 0;//例2有无内存泄露? }
이 프로그램은 주로 잘못된 malloc 반환 값 조건을 감지하는 데 사용됩니다.
여기서 C에서 유형 할당(char *)은 선택 사항이지만 C++에서는 필수이므로 유형 할당을 사용하면 C 프로그램을 C++로 포팅하는 것이 더 쉬워집니다.
프로그램 유연성을 얻으려면 주로 동적 배열을 사용하세요. 필요한만큼 배열을 만들 수 있습니다. 공간을 낭비할 필요가 없습니다.
더 많은 프로그래밍 입문 튜토리얼을 보려면 PHP 중국어 웹사이트를 주목하세요!
위 내용은 C 언어에서 동적 메모리 할당을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











C 언어에서 특수 문자는 다음과 같은 탈출 시퀀스를 통해 처리됩니다. \ n 라인 브레이크를 나타냅니다. \ t는 탭 문자를 의미합니다. char c = '\ n'과 같은 특수 문자를 나타 내기 위해 탈출 시퀀스 또는 문자 상수를 사용하십시오. 백 슬래시는 두 번 탈출해야합니다. 다른 플랫폼과 컴파일러마다 다른 탈출 시퀀스가있을 수 있습니다. 문서를 참조하십시오.

C 언어에서 숯 유형 변환은 다른 유형으로 직접 변환 할 수 있습니다. 캐스팅 : 캐스팅 캐릭터 사용. 자동 유형 변환 : 한 유형의 데이터가 다른 유형의 값을 수용 할 수 있으면 컴파일러가 자동으로 변환됩니다.

char 어레이는 문자 시퀀스를 C 언어로 저장하고 char array_name [size]로 선언됩니다. 액세스 요소는 첨자 연산자를 통해 전달되며 요소는 문자열의 끝점을 나타내는 널 터미네이터 '\ 0'으로 끝납니다. C 언어는 strlen (), strcpy (), strcat () 및 strcmp ()와 같은 다양한 문자열 조작 함수를 제공합니다.

C 언어에는 내장 합계 기능이 없으므로 직접 작성해야합니다. 합계는 배열 및 축적 요소를 가로 질러 달성 할 수 있습니다. 루프 버전 : 루프 및 배열 길이를 사용하여 계산됩니다. 포인터 버전 : 포인터를 사용하여 배열 요소를 가리키며 효율적인 합계는 자체 증가 포인터를 통해 달성됩니다. 동적으로 배열 버전을 할당 : 배열을 동적으로 할당하고 메모리를 직접 관리하여 메모리 누출을 방지하기 위해 할당 된 메모리가 해제되도록합니다.

C에서 숯 유형은 문자열에 사용됩니다. 1. 단일 문자를 저장하십시오. 2. 배열을 사용하여 문자열을 나타내고 널 터미네이터로 끝납니다. 3. 문자열 작동 함수를 통해 작동합니다. 4. 키보드에서 문자열을 읽거나 출력하십시오.

Char 데이터 유형은 C 언어로 단일 문자를 나타내며 문자 또는 ASCII 코드 값을 저장하는 데 사용됩니다. 1. 저장 문자 상수 (예 : 'a') 2. 저장 ASCII 코드 값 (65와 같은 대문자 'a')

C 언어에서 char 변수에 값을 할당하는 방법은 다음과 같습니다. 예를 들어 단일 따옴표로 값을 할당합니다. char ch = 'a'; 예를 들어 문자 상수를 사용하여 값을 할당합니다. 예 : char ch = '\ n'; 예를 들어 산술을 사용하여 값을 할당합니다. 예 : char ch = 'a'1; 포인터를 사용하여 값을 할당합니다. 예 : char ptr = "hello"; char ch = ptr;

C 스위치 문에서 기본적으로 발생하는 오류를 피하기위한 전략 : 상수 대신 열거를 사용하여 사례 문의 값을 열거의 유효한 멤버로 제한합니다. 마지막 사례 명령문에서 러프를 사용하여 프로그램이 다음 코드를 계속 실행할 수 있도록하십시오. 스위치가없는 스위치 문의 경우 항상 오류 처리에 대한 기본 문을 추가하거나 기본 동작을 제공하십시오.
