본문 바로가기

전체 글

(290)
DLL Error "Expression: __acrt_first_block == header" 나의 상황은 DLL 프로젝트와 DLL을 명시적으로 링크하고 함수를 호출하는 간단한 MFC 기반 exe로 구성되어 있었다. 어느 순간부터인가 DLL의 함수를 호출하면 해당 함수가 종료 시 exception이 발생하여 "Expression: __acrt_first_block == header"이란 에러를 발생했다. 구글에 찾아보니 원인이 여러 개가 있는 듯했다. "주원인은 힙 메모리를 공용으로 사용하는 과정에서 메모리 해제 시 발생하는 문제" 이며 해결 상황은 여러 가지가 있었다. 1. DLL과 EXE의 MFC설정이 다른 경우 맞춰주기 DLL과 힙메모리를 같이 쓰는지 설정하는 값으로 맨뒤에 소문자 d는 디버그 모드이며 MT의 경우에는 MFC Static Library를 사용하는 것이고 MD의 경우에는 MFC..
펌 ] 삶을 바라보는 태도 - 인생을 게임처럼 살아보기 긱뉴스에서 상당히 재밌는 글 + 제법 공감도 많이 되는글을 읽게 되어 공유합니다 아래 링크에서 읽어주세요 https://zzsza.github.io/diary/2023/12/17/live-like-a-game/#%EC%A0%80%EB%8A%94-%EB%8B%A4%EB%A5%B8-%EC%82%AC%EB%9E%8C%EB%93%A4%EC%97%90-%EB%B9%84%ED%95%B4-%EB%AA%BB%ED%95%B4%EC%84%9C-%ED%9E%98%EB%93%A4%EC%96%B4%EC%9A%94 삶을 바라보는 태도 - 인생을 게임처럼 살아보기 키워드 : 인생의 태도, 게임처럼 살자, 인생을 게임처럼, 삶의 태도 인생을 바라보는 태도 인생을 살다보면 다양한 경험을 하기도 하고, 좋은 일도 있고 힘든 일도 존재합..
WinInet httpsendrequest() 멈춤, 응답없음, 오류 기존의 exe로 된 프로세스를 DLL로 변환하는 작업 중 프로그램이 멈추는 현상이 확인되었다. 디버깅 결과 WinInet의 httpsendrequest() 함수에서 아무런 응답을 주지 않았다. https://learn.microsoft.com/ko-kr/windows/win32/api/wininet/nf-wininet-httpsendrequesta HttpSendRequestA 함수(wininet.h) - Win32 apps 지정된 요청을 HTTP 서버로 보내 호출자가 일반적으로 HttpSendRequestEx에 전달되는 것 이상으로 추가 데이터를 보낼 수 있도록 합니다. (ANSI) learn.microsoft.com 하다못해 에러라도 발생하면 오류코드 검색을 해 볼 텐데 아무런 응답 없이 멈춰만 있으..
Beakjoon] GCD(n, k) = 1 aka.오일러의 피 (백준 11689 코테) - 정수론 (C++) 🅰️문제주소 : https://www.acmicpc.net/problem/11689 🚩문제 🪡풀이 - 주어진 수에서 그 수보다 작은 자연수 중 최대공약수가 1이 되는 수(서로소)의 개수를 구하는 것으로 오일러의 피 함수를 구현할 줄 아는지 묻는 문제 - 소수를 구하는 에라토스테네스의 체와 비슷하게 구현가능한데 배수를 0으로 지우는 부분 대신 P[i] = P[i] -[Pi]/K 로 변경해 주면 된다 - 해당문제는 한번의 입력만 주어지기에 따로 배열에 저장할 필요 없이 매번 새로 구하게 하면 된다 ☕코드는 아래 숨김 더보기 #include #include #include int main() { std::ios::sync_with_stdio(false); std::cin.tie(0); std::cout.tie..
Beakjoon] 제곱 ㄴㄴ 수 (백준 1016 코테) - 정수론 (C++) 🅰️문제주소 : https://www.acmicpc.net/problem/1016 1016번: 제곱 ㄴㄴ 수 어떤 정수 X가 1보다 큰 제곱수로 나누어 떨어지지 않을 때, 그 수를 제곱ㄴㄴ수라고 한다. 제곱수는 정수의 제곱이다. min과 max가 주어지면, min보다 크거나 같고, max보다 작거나 같은 제곱ㄴㄴ수 www.acmicpc.net 🚩문제 🪡풀이 - 에라토스테네스의 체를 응용해야 한다. 제곱수로 나누어 떨어지지 않는 수를 찾아야 하므로 반대로 제곱수를 계속 곱해가며 지워나가야 한다. - 값이 무엇인지가 중요한 게 아니라 개수만 체크하면 되기에 bool타입의 배열을 사용한다. - min과 max의 값이 엄청 크므로 overflow에 주의해야 한다. - 추가로 메모리 사용에도 주의해야 한다 ☕코드..
Beakjoon] 소수 구하기 (백준 1929 코테) - 정수론 (C++) 🅰️문제주소 : https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 🚩문제 🪡풀이 - 최대 범위가 1,000,000으로 주어졌으므로 에라토스테네스의 체를 사용해야 한다. O(Nlog(logN)) 의 시간복잡도를 가진다 - 연산하기 쉽게 0에서 N까지 모두 벡터에 넣은 뒤 에라토스테네스의 체를 돌리며 소수가 아닌 수는 0으로 변경시킨다. - M에서 N사이의 0이 아닌 값을 출력한다. ☕코드는 아래 숨김 더보기 #include #include #include int main() { ..
Beakjoon] 수 묶기 (백준 1744 코테) - 그리디 🅰️문제주소 : https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 🚩문제 🪡풀이 - 최댓값을 구하기 위해 공식을 잘 살펴보면 양/음 수끼리 절댓값이 큰 수의 곱을 묶어줘야 하며 0은 절대로 곱해져서는 안되며 양수 1은 곱해 봤자 이므로 더해줘야 한다. - 위의 분석으로 숫자는 4개의 타입을 가진다 (0, 1, 1을 제외한 양수, 음수) - 1을 제외한 양수와 음수는 우선순위 큐로 나눠서 정렬시키고 남은 수가 1개 이하가 될 때까지 곱을 묶어준다..
Beakjoon] K번째 수 (백준 1300 코테) - 탐색 🅰️문제주소 : https://www.acmicpc.net/problem/1300 1300번: K번째 수 세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B www.acmicpc.net 🚩문제 🪡풀이 - 문제 그대로 2차원 배열을 만들고 정렬을 시키면 시간복잡도가 N^2으로 초과해버린다. - A[i][j] = i×j 배열에서 두 가지의 규칙을 찾아야 한다. 1) 해당배열은 k번째 값은 k의 값을 넘지 못한다. (3x3배열에서 마지막 인덱스의 값이 9이므로) 2) 한 행에서 '중앙값을 행으로 나눈 값' vs '열의 수' 둘 중 작은 수..