동적 정적 바인딩 사전 준비 * 먼저 다형성에 대한 개념을 알고 있어야 한다. https://licktwice.tistory.com/59https://licktwice.tistory.com/59 [JAVA]자바 - 다형성 Polymorphism 다형성 Polymorphism OOP의 4대 특성 * 다형성은 OOP(Object Oriented Programming)의 4대 특성 중 하나로 주류 OO언어에 꼭 들어가는 개념이다. * 그중에서도 가장 핵심이라고 생각되는 개념이다. 넓은 의미의.. licktwice.tistory.com * 즉, 다형성을 사용하기 위해서는 동적 바인딩이 필요하다. 사전 준비 * 동적 바인딩과 정적 바인딩의 차이를 알기 위해서는 상속관계와 함수 오버라이딩이 필요하다. * 다형성을 ..
라이브러리 라이브러리란? * 라이브러리는 다른 파일들과 합쳐지기 위한 파일이다. (허접한 설명이네) * 다른 파일과 합쳐지는 게 목적이므로 프로젝트이지만 실행파일을 만들지 않는다. * 코드 재사용이 매우 높다. * C에서 라이브러리는 정적 라이브러리와 동적 라이브러리로 나눌 수 있다. * 대표적으로 c표준라이브러리에 들어있는 함수들을 우리는 자유롭게 사용한다. 코드가 내부적으로 어떻게 도는지 정확히 알 수는 없지만 우리는 라이브러리를 믿고 함수를 사용한다. * 소스코드를 보여줄 수도 있지만, 라이브러리는 오브젝트파일만 보내도 괜찮다. 헤더파일과 함수에 대한 설명만 충분하다면 우리는 기술 유출을 방지하며 라이브러리를 배포할 수 있다. 라이브러리는 프로젝트이다 * 일단 프로젝트(project)란 실행파일이나..
해시 테이블 Hash Table 1편이 있어용 해시 테이블 Hash Table * 해시 테이블이 시간 복잡도 O(1)을 가지기 위해서는 해시 값과 인덱스가 쉽게 매칭이 되어야 한다. * 하지만 해시 값의 중복이나 인덱스의 중복으로 인해 둘의 관계가 직관적이지 못 할 수 있다. 해시 값의 중복 1. 상황에 맞는 해시 함수 선택 해시 함수에 따라 중복 확률이 다르며 같은 해시 함수라도 자료형이나 크기에 따라 중복되는 확률이 다르다. 상황에 맞는 해시 함수를 선택하는 것만으로 충돌을 많이 피할 수 있다. 1-1. 하지만 완벽하지는 않다. 상황에 맞는 해시 함수를 선택한다 해도 해시 함수는 어쩔 수 없이 중복이 생기는 함수이다. 다른 해결책과 같이 사용하는 것이 좋다. 1-2. 완벽할 수도 있다. 해시 함수에 ..
동적 메모리 할당, 해제에 관한 규칙 또는 권장 (이 글은 편협한 지식을 가지고 쓰는 의견일 뿐입니다...) 어째서 규칙을 만들어야 하는가? * 메모리를 할당했으면 무조건 해제해야 하며, 중복 해제 또한 매우 위험하기 때문이다. * 따라서 누가(언제, 어디서) 책임을 지고 해제를 수행해야 하는가에 대한 명확한 규칙이 있어야 한다고 생각한다. (이는 자기 자신과 팀원 모두에게 이롭다고 생각한다.) 1. 메모리를 생성한 함수가 책임지고 해제한다. * 가장 먼저 생각해봐야 하는 구조이다. 이 구조로 만들 수 있다면 가장 올바른 방법이라 생각한다. 1-1. 함수 안에 return이 많다면 #include #include void make_int_malloc(size_t size) { int* p = malloc..