[C/C++ Tip] 14. 동적 메모리 할당
·
C언어 30강
동적 메모리 할당C언어에서 동적 배열은 프로그램 실행 중에 배열의 크기를 결정하고 메모리를 할당할 수 있게 해주는 매우 유용한 기능이다. 동적 배열은 malloc, calloc, 또는 realloc 함수를 사용하여 힙(Heap) 영역에 메모리를 할당함으로써 생성된다. 이러한 방식은 정적 배열과 달리, 실행 시간에 배열의 크기를 유연하게 조절할 수 있게 해준다.⭐1. 필요성유연성: 프로그램 실행 중에 배열의 크기를 결정할 수 있으므로, 사용자 입력이나 다른 실행 시간 데이터에 기반한 메모리 할당이 가능하다.메모리 효율성: 필요한 만큼의 메모리만 할당하여 사용하므로, 메모리 낭비를 줄일 수 있다.⭐2. 메모리적인 관리의 장점 및 단점2.1. 장점 메모리 최적화: 정적 배열과 달리, 필요한 만큼의 메모리만 사..
[파이썬] 자료구조 : python(List) 메모리 구조에 대해 파헤치기
·
Python/Basic
python List 메모리에 대해 알아 보겠습니다. list_a = [1,2,3,4] list_b = list_a print("list_a :", list_a) print("list_b :", list_b) print("list_a 메모리 :", id(list_a)) print("list_b 메모리 :", id(list_b)) """ 결과 list_a : [1, 2, 3, 4] list_b : [1, 2, 3, 4] list_a 메모리 : 1305532916296 list_b 메모리 : 1305532916296 """ list_a의 리스트를 list_b에 대입연산자( = )를 사용하게 되면, list_b에 값이 저장되는 것이 아니라, list_a의 메모리 주소를 저장하게 되어 list_a와 list_b..
2차원 배열 동적할당하기 3 편
·
C, C++
안녕하세요 2차원 배열 동적할당하기 3편입니다. 2편에서는 1차 배열을 2차 배열처럼 표현하였는데 단점으로 배열 사용할 때 인덱스가 복잡하여 사용하기 어려웠습니다. 이제는 1편의 2차 배열을 조금 정리하여 이쁘게 표현해보도록 하겠습니다. int** mat; mat = (int**)malloc(sizeof(int*) * column); mat[0] = (int*)malloc(sizeof(int) * row *column); for (int i = 1; i
2차원 배열 동적할당하기 2편
·
C, C++
안녕하세요. 2차원 배열 동적할당하기 두 번째글입니다. 1편에서 처럼 2차원 배열을 표현하게 되면 column끼리는 바이트가 순차적입니다. 하지만 row끼리는 다른 메모리 공간에서 할당받게 됩니다. 메모리 공간이 순차적이지 않기 때문에 배열에 접근할 때마다 불필요한 동작이 생기게 됩니다. 메모리 공간을 활용하기 위해 다른 방법을 사용하도록 하겠습니다. 그림과 같이 일차원 배열을 마치 이차원 배열처럼 표현할 수 있습니다. 장점 : 메모리가 1편처럼 끊어지지 않습니다. 단점 : 1. 배열을 사용할 때 인덱스가 복잡하다는 것입니다. int* mat; mat = (int*)malloc(sizeof(int) * column * row); // 배열의 크기만큼 메모리 할당 for (int i = 0; i < col..
2차원 배열 동적 할당하기 1편
·
C, C++
c언어에서 2차원배열을 만드는 방법은 이와 같습니다. arr[3][3] = {0, }; 그러면 3X3 2차원 배열이 생성됩니다. 하지만 가로의 크기와 세로의 크기를 컴파일 이전 시간에 미리 정해줘야 합니다. 즉, 가로 안에 상수가 들어가야합니다. 만약 실행 도중에 사용자가 원하는 크기만큼의 배열을 만들고 싶으면 어떻게 해야할까요? 아마 가장 보편적으로 알려져 있는 방법입니다. scanf("%d", column); scanf("%d", row); int **arr; arr = (int**) malloc ( sizeof(int*) * column); for(int i=0; i
18진수
'메모리' 태그의 글 목록