C, C++7 2차원 메모리 동적할당 (C++) new, delete를 사용해서 동적할당을 하고 메모리를 해체해보았다. 다시금 포인터배열의 구조를 익힐 수 있었다. 1. new (int*[3]); 과 new int * [3]; , new int [3]과 new (int[3]);의 차이 2.*(*(p+2) + 3)의 구조 3. 왜 delete, 메모리해제할때 동적할당된 일반변수 즉 *(*(p+0) + 0)은 해제해주지 않고 포인터변수만 메모리해제 해주는가? ex ) for (i = 0; i 2020. 8. 27. 다형성(Polymorphism) 다형성은 오버로딩, 오버라이딩, 부모클래스를 가르키는 포인터변수가 자식클래스를 동적할당받은 주소를 받아 쓸 수 있는 그런 유연함을 얘기한다. 1. 오버로딩은 클래스안 이름이 같은 함수, 같은 매개변수 수가 있더라도 그 매개변수 자료형이 다르면 같은 이름으로도 함수가 존재할 수 있다. 2. 오버라이딩은 부모클래스의 함수 앞에 virtual을 쓰게 되면 자식클래스에서 그 함수에 무엇을 덧대어 사용이 가능하다. 이는 상속받은 자식클래스만 가능하며 상속 받았기때문에 메모리구조가 같으므로 함수에 코드를 더 덧대어 사용이 가능한 것은 메모리 확장의 개념이다. 3. 부모클래스를 가르키는 포인터변수가 자식클래스를 동적할당 받은 주소를 받아 쓸 수 있는 유연함 아래는 김성엽 C++ 다형성 실습코드를 바탕으로 연습한 코드.. 2020. 8. 25. 오버라이딩(Over riding) 1. virtual을 부모클래스에 있는 함수에 써서 자식클래스에서 오버라이딩하는 연습을 했다. 2. 포인터 배열에 객체를 동적할당 후, 동적할당한 그 객체의 함수를 써보았다. 3. 클래스, 객체는 구조체과 같게 메모리의 크기가 있다. 그건 구조체와 마찬가지로 변수의 크기다. 그리고 클래스 안에있는 함수와 변수는 서로 다른 메모리에 할당된다. 4. 예를들어 멤버변수가 char, int 순으로 선언이 되어있다면 총 8바이트메모리가 소요된다. 그리고 함수에 virtual이 있다면 객체에서 포인터변수를 사용해야하므로 4바이트가 할당되야해서 총 12바이트가 할당된다. #include #pragma warning(disable:4996) class Person { protected: char m_name[30] =.. 2020. 8. 24. 레이달리오 올웨더포트폴리오(2) #include #pragma warning(disable:4996) typedef struct AllWeatherpoto { double allmoney, left_moeny, vti, spts, sptl, sgol, djp; }POTO; void SettingAllWeather(POTO* p_poto_temp); void Showpoto(POTO* p_poto_temp); void main() { POTO weather_poto; int user_count = 0; while (1) { printf("[ALL WEATHER]\n"); printf("1. Setting All Weather\n"); printf("2. what you gotta invest with all weather\n"); pri.. 2020. 8. 23. 레이달리오 올웨더포트폴리오(1) All weather는 레이달리오가 모든계절에서 이기는 포트폴리오라고해서 지어진 이름이다. 내 포트폴리오는 올웨더로 구성하고 있으며 자산배분으로 인해 경제침체에서도 꾸준한 우상향을 보이고 있다. 자산배분 덕분에 경제위기에서도 큰 리스크가 없다. 애초엔 주식을 물가상승률보다 은행금리가 낮으니, 예금을 하면 내 돈을 잃는 것이기 때문에 주식을 시작했지만 갈수록 욕심은 커져갔다. '재무제표모르면 주식투자하지마라'의 저자 사경인의 책을 읽고 가치투자에 대해 공부를 하면서 가치투자를 시작하다가 투자공부도 중요하지만 블로소득도 중요하지만, 근로소득을 벌 수 있는 기술을 공부해야겠다라는 생각이 들어서 맘편히 주식투자할 수 있는 자산배분에 대해 공부하면서 레이달리오의 올웨더포트폴리오를 알게되었다. 사실 자본주의는 제로.. 2020. 8. 23. 도서대여프로그램 with C 이런 큰(?)프로그램은 처음만들어본다. 문법공부하고 내가 배운 걸로 뭐하나라도 만들어봐야겠다해서 만든 프로그램이다. 내가 배운 점을 요약해봤다. 1. 디버깅을 할 줄 아는 개발자가 되자 처음에는 오류가 나면 무조건 그 오류코드복사해서 구글링했는데, 가만히 생각해보면 오류메세지를 읽지도 않고 구글링한 것도 대부분이거니와, 오류를 읽지도않고 답답한 마음만 앞섰다. 해서 차분하게 오류메세지읽고 차분하게..(가능할까..?)디버깅하는 습관을 들이자. 메모리누수도 메모리주소까지 보면서 코드를 짜려면 많이 연습하고 공부해야겠단 생각이 든다. 2. 문법적으로나 메모리관리측면으로나 구조적으로나 어느것이 좀 더 나은 표현이고 어떤 코드가 맞는 코드인지를 많이 배웠다. 처음 내가 짠 코드들은 허점이 너무도 많았다(지금도 허.. 2020. 8. 21. STACK, HAEP 동적할당 Stack은 컴파일러가 코드에 따라 메모리를 정적할당해주는 영역으로 stack frame으로 Base pointer와 stack pointer을 왔다갔다하며 메모리를 효율적으로 사용한다. 이에반해 Heap란 영역은 프로그램이 실행 중에 메모리를 동적으로 할당할 할 수 있도록 하는 메모리 영역이다. 동적할당을 배우기 전에는 배열로써 한계였던 코드가 동적할당으로 계속 프로그램실행 중 메모리가 필요할때 메모리를 할당해서 사용할 수 있으니 좋았다. 아래는 연결리스트, 노드를 사용하여 동적할당된 메모리의 주소를 잃어버려서 다시 사용 못할 수 있는 상황을 이겨냈다. 나중에는 사용자가 찾고싶은 이름으로 전화번호를 찾을 수 있는 코드를 짜봐야겠다. #include #include #pragma warning(disab.. 2020. 8. 15. 이전 1 다음