전체 글 (7) 썸네일형 리스트형 Heap과 Stack, 프로세스 할당 메모리와 사용에 관한 의문 우리는 주로 프로세스의 메모리 크기가 Code, Data, heap, stack으로 나뉜다고 배운다 stack은 컴파일 시에 크기가 결정되며 heap은 dynamic하게 할당받을 수 있다고도 배운다 해당 메모리가 사용되는 방향도 생각보다 구체적으로 배우게 된다 하지만 실제 프로세스를 개발하다보면 문득 이 구조가 이해가 되지 않을 때가 있다 초기 실행 시의 메모리 크기는 작은 편이고, 이는 변수들을 메모리에 할당하면서 점점 크기가 켜져간다 그럼 Heap 영역의 메모리를 Stack이 있는 영역 이후까지 써버리면 어떻게 되는것인가? ref.image --- http://tcpschool.com/c/c_memory_structure 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩.. [C++] Is UTF 8 멀티바이트_CP949 -> UTF8을 해야 할 일이 생겼다 내 프로그램은 CP949였고, tgz 파일 압축 해제를 하는데, 내부 경로가 UTF-8인 경우였다 CP949로 읽어드리면 당연히 invalid string이므로 사용할 수가 없다 해당 과정은 (char*)멀티바이트_CP949 -> (wchar*)유니코드 -> (char*)UTF-8 의 과정을 거쳐야 했는데, 그 전에 멀티바이트(CP949)로 읽어드린 문자열이 UTF-8인 경우와 아닌 경우를 가를 수 있어야 했다 여기저기 찾다가 짜증나서 문자열 전체를 검토하는 방식으로 그냥 무식하게 만들었다 아마 여기서도 더 개선을 할 수 있을 거 같은데 빨리 집에 가고 싶어서 일단 점을 찍는다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16.. [Git sourceTree] reference broken sourcetree 를 사용중에 fetch가 안되는 현상이 발생했다 ㅇㄴ 초기에는 stack overflow를 참고하여 시도하였다 1. git gc --prune=now INPUT>git gc --prune=now error: bad ref for .git/logs/refs/remotes/origin/Dev fatal: bad object refs/remotes/origin/Dev FAIL 2. INPUT>mv .git/refs/remotes/origin/HEAD /tmp INPUT> git gc fatal: bad object refs/remotes/origin/Dev error: failed to run repack FAIL 3. INPUT> git remote set-head origin --aut.. unix 시간을 windows의 FILETIME으로 변환하기 tar unpack 과정에서 생긴 일이다 TarHeader 는 512 byte로 구성되어 있는데 내부에 12바이트 크기(char[12])의 modify time(mtime)이 들어있다 이는 unixTime 기반으로 windows에서 바로 사용하기 어렵다 일단 octet이므로 한번 integer 변환해줘야 하며, 이후 변환된 integer를 다시 한번 window time으로 바꿔줘야 한다 아래는 예시 코드이다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 #include #incl.. LoadLibrary, FreeLibrary, GetModuleHandle HMODULE hModule = LoadLibrary("ntdll.h") HMODULE hModule = GetModuleHandle("ntdll.h") LoadLibrary ⊃ GetModuleHandle >> LoadLibrary = GetModuleHandle + "LoadCount++" + "Load DLL if Count is zero" FreeLibrary unloads DLL if count is zero else just LoadCount-- * LoadCount belongs to process, means, each process has own module count evenif those are loading same module if process ends : unload modul.. 2020 개발자 목표 언어 C++ Python Rust WebAssembly Go 타겟 Common design pattern 완독(*) C++ C++20 까지 follow up 특히 Coroutine 전문가를 위한 C++ 완독 effective modern C++ 완독 Python numpy, pandas pytorch tensorflow discord.py를 이용한 discord 봇 개발 ( asyncio 등 심화 개발 ) AI Kaggle CNN RNN 강화학습 Rust 맛보기 간단한 GUI 게임 개발 - 메트로베니아 계열 WebAssembly 맛보기 GO 맛보기 간단한 다운로드 서버 개발 습관 버릇 아침 / 저녁 최소 한 시간씩 공부하는 시간 만들기 개발하면서 wiki 정리하기 ( markdown 익숙해지기 ) Git.. 왜 System pid는 1이 아니고 4일까? System PID가 항상 4일까? 하는 호기심에 찾아보다 발견한 글 https://superuser.com/questions/1182187/why-is-system-pid-4-not-pid-1 Why is System PID 4, not PID 1? My Google-fu has failed me! On Linux, the process with the lowest PID is init with PID 1, since it is the first process that gets started after the kernel loads, and is responsible for starting all superuser.com 윗 글에서 0은 idle PID 이므로 가장 먼저 부여할 수 있는 PID는 4라고.. 이전 1 다음