백엔드 개발 C#.Net 튜토리얼 C 언어에서 동적 메모리 할당을 구현하는 방법

C 언어에서 동적 메모리 할당을 구현하는 방법

Feb 20, 2020 am 11:43 AM
c 언어 동적 메모리

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

C 언어로 특수 문자를 처리하는 방법 C 언어로 특수 문자를 처리하는 방법 Apr 03, 2025 pm 03:18 PM

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

C 언어로 Char를 변환하는 방법 C 언어로 Char를 변환하는 방법 Apr 03, 2025 pm 03:21 PM

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

C 언어로 Char Array를 사용하는 방법 C 언어로 Char Array를 사용하는 방법 Apr 03, 2025 pm 03:24 PM

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

C 언어 합계의 기능은 무엇입니까? C 언어 합계의 기능은 무엇입니까? Apr 03, 2025 pm 02:21 PM

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

C 현에서 숯의 역할은 무엇입니까? C 현에서 숯의 역할은 무엇입니까? Apr 03, 2025 pm 03:15 PM

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

C 언어로 문자를 표현하는 방법 C 언어로 문자를 표현하는 방법 Apr 03, 2025 pm 03:27 PM

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

C 언어로 char 변수에 값을 할당하는 방법 C 언어로 char 변수에 값을 할당하는 방법 Apr 03, 2025 pm 03:30 PM

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

C 스위치 문에서 기본적으로 발생하는 오류를 피하십시오 C 스위치 문에서 기본적으로 발생하는 오류를 피하십시오 Apr 03, 2025 pm 03:45 PM

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

See all articles