분류 전체보기 90

[C언어] realloc (heap 메모리 크기 변경)

사용범위 Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수 기능 C언어 표준 함수로 이미 할당받은 동적메모리(Heap Memory)의 크기를 변경하기 위해 사용한다. 헤더 #include ※ 함수 사용시 stdlib.h 파일을 include 하지 않는다면 컴파일 시 error 발생 ※ 함수 void* realloc(void* memory, size_t size); 파라미터 void* memory 이미 할당받았던 heap memory의 주소를 입력한다. size_t size 변경할 heap memory의 크기를 입력한다. 반환값 성공시 사용 가능한 heap memory pointer가 반환되고 , 인자로 전달한 memory 가 free 된다. 실패시 NULL이 반환되고 인자로 전달한 ..

C언어/stdlib.h 2023.03.28
[C언어] free 함수 (heap 메모리 해제)

사용범위 Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수 기능 C언어 표준 함수로 할당받은 동적메모리(Heap Memory)를 해제하기 위해 사용한다. 헤더 #include ※ 함수 사용시 stdlib.h 파일을 include 하지 않는다면 컴파일 시 error 발생 ※ 함수 void free(void* memory); 파라미터 void* memory malloc, calloc, realloc 과 같은 함수를 통해 할당받은 heap memory 주소를 입력한다. NULL 을 넣어도 문제는 없다. (malloc, calloc, realloc 함수의 경우 실패 시 NULL이 반환된다) 반환값 free 함수는 반환값이 없지만 정상적인 경우 heap memory가 반환된다. 만약 실패시 ..

C언어/stdlib.h 2023.03.26
[C언어] 댕글링 포인터와 와일드 포인터 (Dangling pointer & Wild pointer)

와일드 포인터 (Wild Pointer) Wild Pointer(야생의 포인터). 단어의 의미 그대로 초기화가 안돼서 쓰레기값으로 채워진 포인터를 의미한다. 단어의 정의를 처음 볼 수도 있지만 포인터를 배울 때 가장 기본적으로 듣는 말이다. (포인터 변수는 NULL 초기화를 하는 것이 좋다.) 이유는 매우 간단하다. 개발자가 의도하지 않은 메모리 영역에 접근하여 SIGSEGV 같은 치명적인 오류가 발생할 수 있기 때문이다. 또한 Wild Pointer가 위험한 이유는 복잡한 비즈니스 코드에서 대부분의 포인터 예외처리는 NULL Check를 통해 이루어지는데, Wild Pointer의 경우 쓰레기값으로 채워져 있어 이러한 예외를 무력화하기 때문이다. 와일드 포인터 (Wild Pointer) 예외 처리 Wi..

[C언어] calloc 함수 (초기화된 heap 메모리 할당)

사용범위 Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수 기능 C언어 표준 함수로 초기화된 동적메모리(Heap Memory) 할당을 받기 위해 사용한다. 헤더 #include ※ 함수 사용 시 stdlib.h 파일을 include 하지 않는다면 컴파일 시 error 발생 ※ 함수 void* calloc(size_t NumOfElements, size_t SizeOfElements); 파라미터 size_t NumOfElements 메모리를 할당할 elements(요소)의 수 (※ 동적메모리 할당받는 변수의 배열 크기를 입력하며, 배열이 아닐 경우 1을 입력한다.) size_t SizeOfElements 메모리를 할당할 elements(요소)의 크기 (※ 동적메모리 할당받는 변수 ty..

C언어/stdlib.h 2023.03.02
[C언어] malloc 함수 (heap 메모리 할당)

사용범위 Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수 기능 C언어 표준 함수로 동적메모리(Heap Memory) 할당을 받기 위해 사용한다. 헤더 #include ※ 함수 사용 시 stdlib.h 파일을 include 하지 않는다면 컴파일 시 error 발생 ※ 함수 void* malloc(size_t size); 파라미터 size_t size malloc 함수를 통해 할당받을 memory의 크기를 입력한다. 반환값 성공 시 유효한 포인터 주소를 반환한다. 실패 시 NULL을 반환한다. Memory 가 부족한 경우 malloc 함수가 실패할 수 있다. 추가로 Memory가 남아있지만 지속적인 메모리 할당 & 해제를 반복하다 보면 내부적으로 메모리가 파편화되어 용량이 남아있어도 ..

C언어/stdlib.h 2023.03.01
[Kubernetes] Docker vs Podman

Kubernetes가 Docker를 사용하지 않으려고 계속 노력하는 중이다. 그 이유에는 여러 가지가 있지만 kubernetes 설치 시 docker 설치가 필요 없어졌고, image 개발 시에도 굳이 docker를 사용하지 않아도 되었다. 결정적으로 linux의 일정버전 이상부터는 docker가 아닌 podman을 사용을 권장하는만큼 어떤 차이가 있는지 확인해 보았다. Daemon less podman 은 container를 실행하기 위한 데몬이 필요없지만, docker 는 container 를 관리하기 위해 백그라운드에서 데몬 프로세스를 실행해야 한다. Rootless podman 은 container 를 일반 user로 실행할 수 있고, docker는 container 실행을 하기 위해 root 권..

[Kubernetes] 쿠버네티스 대시보드 OpenLens 설치 (k8s dashboard openlens install)

kubernetes dashboard 를 설치하려고 검색을 해봤지만 몇 년 전에 사용하던 기본 대시보드만 자꾸 나오는 거 같다. 기존 꺼도 좋지만 불편한 점이 있었기에 다른 대시보드를 찾던 중 openlens 에 알게 되어 설치를 하게 되었다. Kubernetes Lens IDE 는 기업에서 유료화가 되었으며, OpenLens 는 무료로 이용이 가능해서 Windows 환경에서 설치해서 사용해보려고 한다. (Web 아님) 1. OpenLens 설치 site 에서 설치 가능한 OpenLens 버전을 확인하고 설치한다. (https://github.com/MuhammedKalkan/OpenLens) 추후에 License가 변경될 수도 있으니 M..

[C언어] abort 함수 (프로그램 중단, 비정상 종료)

사용범위 Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수 기능 C언어 표준 함수로 SIGABRT 시그널을 발생시켜 프로그램의 비정상 종료를 의도한다. 헤더 #include ※ 함수 사용시 stdlib.h 파일을 include 하지 않는다면 컴파일시 error 발생 ※ 함수 void abort(); 파라미터 void 반환값 없음 (void) 잡학지식 abort 함수는 프로그램을 강제종료하는 함수라고 생각하면 된다. 따라서 24시간 서비스를 제공해야하는 프로그램이거나 예외처리를 하는 방향에서는 사용하면 안된다. abort 함수는 보통 프로그램을 테스트하는데 자주 사용하며, 유닛테스트(unittest) 에서 활용하는것을 자주 볼 수 있다. SIGABRT 시그널을 발생시켜서 프로그램을 종..

C언어/stdlib.h 2023.03.01
[C언어] strrchr 함수 (문자열의 마지막부터 문자를 검색)

사용범위 Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수 기능 C언어 표준 함수로 특정 문자열의 마지막 위치부터 문자를 검색할 때 사용한다. 헤더 #include ※ 함수 사용시 string.h 파일을 include 하지 않는다면 컴파일 시 error 발생 ※ 함수 char *strrchr(const char *str, int val); 파라미터 const char *str 특정 문자를 검색할 문자열 버퍼를 입력한다. int val 문자열 버퍼의 마지막에서부터 검색할 문자를 입력한다. 반환값 문자(val) 을 찾은 경우 문자열에서 val의 마지막 위치의 포인터를 반환 문자(val) 을 찾지 못한 경우 시 NULL 을 반환 잡학지식 strrchr 함수는 검색하는 string 버퍼의 ..

C언어/string.h 2023.02.24
[DevOps] Jetbrains IDE를 활용한 Docker + Kubernetes 연동 (Clion, InteliJ, Goland ...)

2023-02-10 기준으로 작성된 글이기 때문에 작성된 날을 기준으로 멀지 않은 미래에는 포스팅 내용에 대한 추가적인 검증이 필요합니다. Jetbrains의 여러 IDE를 사용하고 있지만, 본 포스팅에서는 goland IDE를 사용하였습니다. [환경] Node 4개로 구성된 Kubernetes Cluster 1개 Kubernetes 설치 Node는 Docker 설치를 하지 않음(podman + buildah 사용 중) Jetbrains의 IDE 중 Goland를 사용하여 개발 Docker가 설치되어 있는 CI 서버 (k8s node가 아닌 단순한 Docker 설치된 곳) Nexus Repository (Docker image) [목표] Goland를 사용하여 Docker 환경에서 컴파일 + image ..

DevOps 2023.02.10
반응형