본문 바로가기

티스토리챌린지12

13-8장 메모리 누수(2)_이미 해제된 동적 메모리 영역을 다시 해제 하려고하는 경우 #include #include int main(void) { char * A; char * B; A = (char *)malloc(100*sizeof(char)); B = (char *)malloc(100*sizeof(char)); B = A; free(A); // A는 해제 가능하다. free(B); // 원래의 B는 해제 불가능할 뿐 아니라, 이미 해제한 A를 다시 해제하려 고 하고 있다 (double free) return 0;}   위의 사진처럼 B에 A를 할당을 하면 동적할당 받은 2000번지의 메모리 영역에는 접근할 수 없게 되고 free도 하지 못하게된다.  또한 A와 B를 free하면 같은 메모리 영역을 두번 free하는 것이기 때문에 오류가 발생한다. 따라서, 아래와 .. 2024. 11. 26.
13-4장 구조체 동적 생성 이전에 우리는 구조체 여러 개를 사용하기 위해서는 배열을 사용해서 구조체를 생성했었다. 이제는 동적 할당을 배웠으니, 동적할당을 기반으로 구조체를 동적으로 생성해보자.   [구조체 동적 생성]#include#include#includestruct Movie{ char title[100]; double rate;};int main(){ struct Movie* pi; int size = 0; printf("영화의 개수: "); scanf("%d", &size); pi = malloc(size * sizeof(struct Movie)); if (pi == NULL){ printf("메모리 할당 오류\n"); exit(1); } .. 2024. 11. 25.
State hoisting이 뭐지? 우선, state에 대해서 알아보자. State: UI의 현재 상태를 나타내는 데이터이다. 예를 들어, 화면에 표시되는 숫자 값이 있다면 그 숫자가 State이고, 버튼 클릭에 따라 값이 변경되면 State의 값이 업데이트되어 UI도 변경된 것이다.  State 선언var count by remember { mutableStateOf(0) } state는 위의 형태와 같이 선언이 되는데 mutableStateOf는 state의 값이 변경될 때, 관련 UI가 다시 렌더링되도록 만드는 함수이다. 또한 ,remember는 UI가 렌더링 되더라도 state의 값이 변경되지 않고 유지되도록 만드는 것이다.       Stateful과 Stateless Stateful: 상태가 스스로 관리하는 방식이다. 쉽게 말해.. 2024. 11. 20.
12-8장 파일 포인터 파일 포인터: 파일 내에서 읽거나 쓰기를 시작할 위치를 나타낸다.   파일 포인터에는 순차 접근, 임의 접근이 있다.순차 접근: 데이터를 파일의 처음부터 순차적으로 읽거나 기록하는 것이다.임의 접근: 임의 접근 방법은 파일의 어느 위치에서든 읽기와 쓰기가 가능하다.     파일 포인터 함수 - fseek: 파일 포인터의 위치를 변경하는 함수이다. int seek(FILE *fp, long offset, int origin); 위를 쉽게 해석해보면, "파일 포인터를  특정 지점(origin)에서 특정 값(offset)만큼 이동해라"라는 의미이다.  Origin과 관련된 상수  사용 예시fseek(fp, 0L, SEEK_SET);// 파일의 처음으로 이동fseek(fp, 0L, SEEK_END);// 파일의.. 2024. 11. 19.
12-4장 문자 단위 입력출력 함수(fgetc, fputc) fgetc(fp): fgetc를 사용하면 특정 파일에서 문자 한개를 읽어 올 수 있다.  #include int main(void){ FILE* fp = NULL; int c; fp = fopen("apple.txt", "r"); if (fp == NULL) { fprintf(stderr, "원본 파일 apple.txt를 열 수 없습니다.\n"); exit(1); } c = fgetc(fp) //문자 하나 읽어오기 fclose(fp); return 0;}  ❓ 파일에서 문자를 읽었는데 왜 정수형에 저장을 할까? 파일에서 문자를 읽을 경우,.. 2024. 11. 18.
8.1 Introduction(생략) 해당 부분은 5장과 7장에 대한 간단한 요약 설명이므로 생략 2024. 11. 17.
[기본 용어 설명] 베이즈 정리를 통한 사전 확률(Prior)과 사후 확률(Posterior), 우도(Likelihood) 우선 베이즈 정리를 알기 전 결합 확률(joint prbability)와 조건부 확률(condition probability)에 대해서 알아야한다. 결합 확률 - P(x, y)결합 확률이란 x사건과 y사건이 동시에 일어날 확률을 의미한다.  조건부 확률 - P(x | y)조건부 확률이란 y사건이 일어난 후 x사건이 일어날 확률을 의미한다.  결합 확률과 조건부 확률의 관계 - P(x, y) = P(x| y)P(y)결합 확률은 조건부 확률과 사건 x가 일어날 확률을 곱한 식으로 나타낼 수 있다.    베이즈 정리 이러한 관계를 이용해서  베이즈 정리를 정의할 수 있다. 일반적으로 P(x, y)와 P(y, x)의 확률이 같기때문에 아래의 식이 성립된다.  위 식을 P(y|x)에 대해서 정리를 하면 아래와 같.. 2024. 11. 15.
ColorPickerApp - state hoisting으로 3개의 slider의 값을 하나의 색으로 조합하기 따라서 코드를 설명하자면, 1. state 선언: 데이터 변화에 따라 UI를 변경하기 위해서 사용 2. 상위 Component에서 하위 Component에 state 전달 3.  하위 Component인 ColorPicker에서 slider를 통해서 값을 변경 4. 값이 변경되면 상위 Component의 state 값도 변경 + 동시에, 모든 UI 다시 랜더링 5. 모든 UI가 다시 랜더링 되면서, ColorInfoIntoText의 값도 함께 변경된다.   이런식으로 state가 변경되면 다시 랜더링되면서 모든 ui도 함게 변한다. 2024. 11. 13.
11-7장 공용체 공용체란?: 같은 메모리 영역을 여러 개의 변수가 공유해서 사용하는 것이다. 즉, int i가 특정 메모리 영역을 사용하면 char c는 해당 영역을 사용할 수 없다. union example { char c; // 같은 기억 공간 공유 int i; // 같은 기억 공간 공유};    #include union example { int i; char c;};int main(void){ union example data; data.c = 'A'; printf("data.c:%c data.i:%i\n", data.c, data.i); data.i = 10000; printf("data.c:%c data.i:%i\n", data.c, data.i); .. 2024. 11. 12.
11-1장 구조체 구조체의 선언 struct student { //구조체 정의 int number; char name[10]; double grade;};int main(void){ struct student s1; //구조체 변수 선언}   구조체의 초기화struct student { int number; char name[10]; double grade;};int main(){ struct student s1 = { 24, "Kim", 4.3 }; // (1) 구조체 기본 초기화 struct student s2 = s1; // (2) 이미 초기호된 구조체를 할당받아서 초기화}   구조체 멤버 참조위의 방식처럼 한번에 초기화하는 방법도 있지만 메모 참조(.)를 이용해서 초기화하는 것.. 2024. 11. 11.
2024.11.07 Q&A 1. 색상 왜곡에서 PCA(주성분 분석)를 사용한 방법 우선, PCA는 중요한 축을 찾는 것이다. 이 중요한 축(PCA 1st)은 축의 방향으로 데이터가 넓게 퍼져있다는 것이다. 그 축을 기준으로 데이터가 다양한 특징을 가지고 있다는 것이다. 그리고 다음 축(PCA 2nd)은 PCA 1st를 직교하는 축이 된다. 이제 PCA를 이용한 색상 왜곡을 해보자. PCA를 이용한 색상 왜곡에서 중요한 핵심은 RGB 각각의 색상을 독립적인 특징으로 보고, 이들 간의 상관관계를 통해 새로운 축을 정의하는 것이다. 1. 색상의 특징 찾기R, G, B를 각각 별개의 특징으로 보고, 이 세가지 색상이 어떻게 함께 변하는지 살펴보면서 서로 어떻게 영향을 주는지 보면서 색상의 중요한 변화를 알아낸다. 2. 가장 중요한 변화 .. 2024. 11. 9.
10주차 - 실습 str 속성을 이용해서 address에서 도시와 구를 추출했다. 도시는 앞에서 2글자만 추출해서 뒤에 시를 붙였다. 구는 split()을 통해서 각 행의 첫번째 요소를 구로 설정했다.        1. 우선 date열의 타입을 to_datetime를 활용해서 datetime 타입으로 변경한다. 2. 명시적 인덱싱을 이용하기 위해서 타입을 변경한 date 열을 인덱스로 설정한다. 3. 1번은 슬라이싱, 2번은 인덱싱을 했다. 4. 중요한건 3번과 4번인데 timestamp(시점)를 만들고 timedelta(특정 기간)을 만들어서 더해준다. 특정 기간은 Hour기준, Day 기준, Week 기준, Year 기준 등을 토대로 만들수 있다.      이 부분은 .dt.strftime(지시자) 형식으로 컬럼을 생.. 2024. 11. 7.