본문 바로가기
반응형

[R&D] 프로그래밍37

[C/C++] 메모리 동적할당 2 (realloc, calloc) 지난 포스팅에서 메모리 동적 할당에 대해 설명하고 있습니다. realloc과 calloc은 그의 연장선입니다. 아래 포스팅을 참고해주세요. [C/C++] 메모리 동적할당 및 해제 (malloc, free) 사용법 (tistory.com) [C/C++] 메모리 동적할당 및 해제 (malloc, free) 사용법 메모리 동적할당이란? 프로그래밍을 할 때 사용하는 변수들은 모두 메모리에 저장되어 사용됩니다. 이중 전역 변수/정적 변수는 프로그램의 시작과 종료 시점에, 지역 변수/매개 변수는 함수 geuninote.tistory.com calloc 우선 calloc()의 함수 원형은 아래와 같습니다. #include void *calloc(size_t number, size_t size); number : 할당.. 2022. 8. 3. 06:00
[C/C++] 메모리 동적할당 및 해제 (malloc, free) 사용법 메모리 동적할당이란? 프로그래밍을 할 때 사용하는 변수들은 모두 메모리에 저장되어 사용됩니다. 이중 전역 변수/정적 변수는 프로그램의 시작과 종료 시점에, 지역 변수/매개 변수는 함수의 호출과 반환 시점에 메모리의 할당 및 반납이 이루어집니다. 하지만 동적할당은 프로그램 동작 중에 (런타임) 메모리를 할당받고 반납할 수 있는 것을 말합니다. 즉, 사용자가 원하는 시점에 만들고 반납할 수 있습니다. 메모리 동적할당 및 해제 방법 메모리의 동적 할당은 malloc() 함수를 통해, 메모리 반납은 free()를 통해 사용 가능합니다. 를 통해 사용 가능하며 함수 원형은 아래와 같습니다. #include void *malloc (size_t size); void free (void *ptr); [malloc] .. 2022. 8. 1. 18:30
[C/C++] 배열이란? - 배열의 개념 및 기본 사용법 배열이란? 배열은 사전적 의미로 "일정한 차례나 간격에 따라 벌여 놓음"입니다. 프로그래밍에서의 배열도 자료형의 크기(간격)로 값을 연속적으로 나열한 것을 뜻합니다. 기본 사용 방법 선언 및 초기화 변수명에 대괄호 '[]'를 더하여 선언할 수 있으며, 대괄호 안에는 배열의 크기를 지정합니다. char cVal[2]; 하지만 배열의 크기를 지정하지 않고 선언도 가능한데 이때는 선언과 동시에 초기화를 하지 않으면 에러가 발생합니다. 선언과 동시에 초기화하는 방법은 중괄호 '{}' 사이에 배열의 크기만큼 값을 넣어주면 됩니다. (초기화 방법은 크기를 지정해도 동일하게 적용됩니다.) int iValT[] = {1, 2, 3, 4, 5}; int iVal[2] = {5, 6}; 사용 배열은 선언 및 초기화를 완료.. 2022. 7. 28. 07:12
[C/C++] 포인터(pointer)란? - 포인터의 기본 개념 포인터(Pointer) 란? C언어에서 포인터란, 포인터 변수라고도 불리며 메모리의 주소 값을 저장하는 변수를 말합니다. 우리가 코딩을 할 때 사용하는 변수들은 값을 가지고 있는데, 이 변수들은 모두 특정 메모리에 위치합니다. 여기서 변수가 가진 값은 메모리에 저장되고 그 메모리의 위치를 변수의 주소(address), 번지라고 합니다. 변수의 주소는 ' & '를 사용해 접근할 수 있고 포인터 변수는 ' * '을 사용하여 선언을 할 수 있습니다. #include int main(void) { char val = 5; char *pVal = &val; char **ppVal = &pVal; printf(" val size : %d / address : %p / value : %d\n", sizeof(val).. 2022. 7. 27. 01:37
다차원 배열 정리 차원은 한점에서 존재하는 값의 갯수입니다. 이는 공간 내에 위치하는 축의 개수를 말하는데, 하나의 좌표에 1개의 점(값)이 있다면 0차원, n개의 축을 기준으로 값이 나열된다면 n차원 배열이라고 합니다. 위와 같이 차원마다 부르는 명칭이 존재합니다. Scalar가 모여 Vector, Vector가 모여 Matrix, Matrix가 모여 Tensor가 됩니다. 3차원 이상은 Tensor들의 집합이 되겠죠 프로그래밍으로 표현을 한다면 0차원이 '변수', 1차원 이상부턴 '배열'이 됩니다. 이들은 메모리에 연속적으로 위치하게 되는데 이는 위에서 말하는 공간이라고 볼 수 있습니다. 위 그림과 같이 메모리에 위치하게 되면 차원은 의미상 존재할 뿐 메모리에 연속적으로 써진 변수에 불과합니다. 이렇기 때문에 코드로 .. 2022. 7. 25. 06:00
[Numpy] 넘파이 행렬 연산 - 브로드캐스팅 (Broadcasting) 브로드캐스팅 (Broadcasting) 선형대수학에서 행렬의 덧셈과 뺄셈을 할 때 행렬의 크기(shape)가 같아야 하지만 넘파이에서는 차원이나 크기가 달라도 조건만 충족하면 자동으로 확장하여 연산합니다. 이를 브로드캐스팅이라고 합니다. 같은 차원일 때 import numpy as np # [1 Dimensional Array] a = np.full(3, 1) # [1 1 1] int32 b = np.array([2]) # [2] int32 abAdd = a - b print(abAdd, abAdd.dtype) # [3 3 3] int32 # [2 Dimensional Array] a = np.full((2, 3), 2.336) # [[2 2 2] # [2 2 2]] int32 b = np.array([.. 2022. 7. 24. 16:55
728x90
반응형