profile
지식을 담습니다.
post-thumbnail

37. 가변배열 코드 (2)

다른 데이터가 들어있는 heap 영역을 침범해서 데이터를 저장하거나?, 사용되지 않는 메모리 영역을 참조하면 일어남그 침범당한 부분에 저장된 변수를 가져오는 코드에 문제가 생김, 다른 사람 코드에서 문제를 일으킬 수도 있음이걸 해결하려면?2칸이 꽉 차면 저장공간을 2칸

2023년 6월 20일
·
0개의 댓글
·
post-thumbnail

36. 가변배열 코드 (1)

헤더파일 우클릭 후 문서로 이동하면 헤더파일이 열림int a\[100]를 선언했는데 101번째 자료를 넣고싶으면? 일반적인 배열로는 불가능함 --> heap 메모리를 이용해서 가변배열로 만들면 됨구조체는 자료형이라 크기가 고정된 이 안에 가변배열을 갖고있을 수는 없음,

2023년 6월 15일
·
0개의 댓글
·
post-thumbnail

35. 가변배열

그동안의 배열은 크기가 고정이었지만? --> int a\[10] = {\~\~\~\~\~~}; 와 같이이게 안되는 이유는?main 함수의 stack 크기를 다 계산한 상태로 컴파일이 되어야 하는데?, 저 변수(a)의 값을 확신할 수 없어서 안되는거임그래서 변수말고 상수

2023년 6월 15일
·
0개의 댓글
·
post-thumbnail

34. 동적 할당 (2)

런타임 중에 대응가능사용자가 직접 메모리를 관리해줘야 함 (malloc 함수가 실행될지 안될지 모르니 메모리 해제를 직접 해줘야 함)우리가 사용하는 전역변수, 지역변수는 기계어 단계에서 메모리 사용량 계산이 끝나서 알아서 해제까지 됨이런식으로 주소값이 존재할 경우 메모

2023년 6월 15일
·
0개의 댓글
·
post-thumbnail

33. 동적 할당, malloc

동적할당 > 의미 : 프로그램 실행 도중에 내가 원하는만큼 메모리를 요청할 수 있는 것 malloc 함수는 실행되는 순간 heap 영역에 ex) 100 byte 를 만들어냄 변수는 코드를 작성하고 실행되는 순간에 메모리 어디에 얼마를 쓸지 이미 정해져있음 그래서

2023년 6월 15일
·
0개의 댓글
·
post-thumbnail

32. 구조체와 포인터

위처럼 있을때 안의 요소들은 구조체의 멤버라고 함변수가 아니라 멤버임MYST = 자료형, s = 변수, 그 안의 s.a는 멤버 (변수가 아닌 이유는 s1.a, s2.a 이렇게 막 늘릴 수 있기 때문)이 구조체를 포인터 변수로 받는다면?pST의 크기는 8바이트임 (int

2023년 6월 15일
·
0개의 댓글
·
post-thumbnail

31. wcscmp 함수

wcscmp (두 와이드 문자열의 크기를 비교), (문자열의 각 첫번째, 각 두번째... 이렇게 비교함 ex) abc, def가 있으면 abc < def 이런식으로 가는거임)int result = wcscmp(s1, s2); 일때wcscmp 함수는 Null 종료된

2023년 6월 15일
·
0개의 댓글
·
post-thumbnail

30. wcslen 코드 직접 짜기

자작해답c == '\\0'\`이 아니라 '\\0' == c로 쓰는 이유는 앞에 상수가 있어야 만약 == 대신 = 를 쓰는 오류가 나와도 컴파일 단계에서 찾을 수 있기 때문왼쪽에 r-value를 쓰는 습관을 들이면 좋다!\#include <wchar.h> 안의 wc

2023년 6월 15일
·
0개의 댓글
·
post-thumbnail

29. 유니코드와 wcslen

멀티바이트 이 방식은 만약 abc한글 이런 문자열을 받으면 가변적으로 앞에는 1바이트, 뒤에는 2바이트로 받음 하지만 이 방식은 이제는 거의 쓰이지 않음 현재는 모든 문자를 2바이트로 표현하는 wide byte system (유니코드)을 사용함 wchar_t s

2023년 6월 15일
·
0개의 댓글
·
post-thumbnail

28. wchar_t와 ROM

앞에 L이 붙으면 저 글자 하나하나가 다 2바이트가 됨short 배열과 wchar 배열의 메모리 주소에 담긴 값은 똑같음, 다만 short에 문자열을 넣을 수는 없음문자열을 포인터 변수로 받을 수 있는 이유는? --> 문자열이 주소값을 반환하기 때문다만 포인터 변수와

2023년 6월 15일
·
0개의 댓글
·
post-thumbnail

27. 메모리 영역

스택힙데이터ROM (코드) (읽기전용, Read Only Memory)아스키코드 49가 문자로 1이기 때문메모리 상의 1은 0000 0001이고문자로서의 '1'은 0011 0001가 되는거임이 개념을 ""로도 확장하면?"459"는? 문자 '4', 문자 '5', 문자 '

2023년 6월 15일
·
0개의 댓글
·
post-thumbnail

26. void*

void\* pVoid = nullptr; 얘는 모든 형태의 주소를 다 받을 수 있음이런식으로 전부 다 가능값의 형태를 void, 즉 어떤 형태로 보지않기 때문에 전부 다 받을 수 있는거고역참조는 당연히 안됨, int는 4바이트, double은 8바이트 이렇게 읽겠지만

2023년 6월 15일
·
0개의 댓글
·
post-thumbnail

25. const와 포인터 (3)

만약 어떠한 함수에서 main 함수의 값을 int test(int a) 이런식으로 a로 받아간다면?같은 값을 a로 복사해 가는거임, 근데 만약 이 값이 너무 크거나 유일해야만하는 값이면 복사해 가는게 문제가 될 수 있음값이 너무 크다면 굳이 함수가 끝날 때 사라질 값을

2023년 6월 15일
·
0개의 댓글
·
post-thumbnail

24. const와 포인터 (2)

\*pInt = 10; 이런식으로 포인터 변수가 가리키는 대상의 값을 바꾸거나?pInt = nullptr; 이런식으로 포인터 변수 자체에 담긴 주소를 다룰 수도 있음const int\* pConstInt = &a; = 값 자체저기서 \*pConstInt = 100; 이

2023년 6월 15일
·
0개의 댓글
·
post-thumbnail

23. const와 포인터

const는 상수 (const int a = 100; 이면 a = 101은 안됨, 100 = 101과 같게 쓴거임)여기서 a같은 상수를 r-value라고 함, 바뀔 수 있는 변수는 l-value하지만 상수의 값을 바꿀 수 없는건 아님, 그냥 문법상으로만 못바꾼다는거지

2023년 6월 15일
·
0개의 댓글
·
post-thumbnail

22. 포인터 (2)

포인터 변수의 타입이 뭐든 포인터 변수의 크기 자체는 다 같음 short\* asd든 int\* asd든... 크기가 다 같음32비트 운영체제 포인터변수 크기는 4바이트, 64비트 포인터변수 크기는 8바이트이걸 실행하면 8이 나오는걸 잘 알수있음int 포인터 변수에 +

2023년 6월 15일
·
0개의 댓글
·
post-thumbnail

21. 포인터

nullptr은 아무것도 들어가지 않았다는 뜻주소의 단위는 byte --> 8bit (bit단위로 주소에 접근할 수는 없음)ex) 100번지 -- 101번지 -- 102번지 이렇게 있으면100번지와 101번지 사이에 1byte, 101... 1byte해서 총 2byte

2023년 6월 14일
·
0개의 댓글
·
post-thumbnail

20. 분할 구현 (.h, .cpp)

위의껀 잘 되지만 만약 이렇게 쓰면?컴파일은 되지만 link 단계에서 오류가 뜸앞에 선언한 함수를 엮어주는건 link 단계에서 함분할 구현 (.h파일과 .cpp파일을 분리해서 구현)만약 헤더 파일을 이렇게 만들고cpp 파일을 이렇게 만들고 실행하면?선언 없이도 main

2023년 6월 14일
·
0개의 댓글
·
post-thumbnail

19. 변수의 종류

스택영역 : 함수가 호출될 때 사용하는 메모리 영역(함수가 선언될 때 그 안의 지역변수도 포함이 되기 때문에 지역변수가 사용하는 메모리 영역으로 봐도 괜찮음)데이터 영역 : 전역변수가 사용하는 메모리 영역(전역변수, 정적변수, 외부변수 전부 이 영역을 사용함)데이터 영

2023년 6월 14일
·
0개의 댓글
·
post-thumbnail

18. 구조체

현재 필기는 c문법 기반 (후에 c++과의 차이점을 설명)내가 내 맘대로 자료형을 만들고 싶다면? --> 구조체를 사용하면 됨(int랑 float을 묶어서 하나의 자료형으로 본거임)위의 코드에서 출력은 8byte가 나옴 (int + float이기 때문)구조체 초기화는

2023년 6월 14일
·
0개의 댓글
·