프로그래밍 QnA

dbsthqkf의 이미지

IPC 함수들의 식별자와 key의 차이가 뭐에요?

semaphore함수 중에서 semget이라는 함수가 있습니다.

int semget(key_t key, int nsems, int semflg);

여기서 key와
semget함수로 반환되는 semaphore id의 차이는 무엇인가요? ㅠㅠ

(아래는 semget에 대한 설명을 가져온 것입니다.)

dltkddyd의 이미지

메모리 해제 delete에 대해서...

int a=*(new int(20));

int* a=new int(20);
delete a;

후자의 코드는 메모리를 명시적으로 해제하기 때문에 메모리 누수 문제는 발생하지 않는다고 확신할 수 있지만 전자의 코드는 어떻게 되나요? 메모리 누수가 발생할까요?

bluebear2706의 이미지

free 에러 문제

int main(void){
Data_b* data_b = NULL;
Data_a* data_a = NULL;

CreateDataA(&data_a);
CreateDataB(&data_b, &data_a);

printf("1 wrappedkey = %p, pData = %p\n", data_a, data_a->pData);
printf("1 data_b = %p, pData = %p\n", data_b, data_b->pData);
Data_b_Release(data_b);
Data_a_Release(data_a);
printf("1 wrappedkey = %p, pData = %p\n", data_a, data_a->pData);
printf("1 data_b = %p, pData = %p\n", data_b, data_b->pData);

return 0;
}

Macuro의 이미지

[WINAPI] 메시지 루프에서 메시지 프로시저로 들어가기 전에 메시지를 검출하여 처리하고 싶습니다.

제목대로 입니다.
다른분이 만든 엔진을 사용 중인데, 메시지 프록으로의 접근이 막혀있어서 어떻게 해볼까 하다가 이런 방법을 택했는데요.

while( msg.message!=WM_QUIT )
{
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
if (msg.message == WM_SETCURSOR)
{
SetCursor(LoadCursor(hInst, MAKEINTRESOURCE(IDC_CURSOR3))) ;
continue ;
}
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
{
~~~~
}
}

dreampia의 이미지

Linux에서 mq_open()시에 ENOMEM 조치 방법을 알고 싶습니다.


struct mq_attr qattr;

qattr.mq_maxmsg = 120;
qattr.mq_msgsize = 16072;

mq_open(.., .., .., &qattr);
mq_open(.., .., .., &qattr);
mq_open(.., .., .., &qattr);
mq_open(.., .., .., &qattr);
mq_open(.., .., .., &qattr);

위와 같이 호출하면 시작하자마자 errno==12(ENOMEM) 에러가 발생합니다.
mq_maxmsg = 10;으로 하면 중간쯤에서 mq_maxmsg = 1; 로 하면 에러없이 잘 넘어가구요..

어디선가 POSIX 메시지 큐에 대한 size를 제한 하고 있는 것 같은데
어떤 값들을 확인해 봐야 할까요?

/proc/sys/fs/mqueue에서 msg_max=120, msgsize_max=16384, queues_max=256으로 세팅했습니다.

MyAbby의 이미지

mfc 다국어 프로그래밍하고 디버깅 할 때

안녕하세요.

MSVC2008을 사용해 다국어 프로그램을 개발하려 합니다. DLL로 따로 빼긴 귀찮아서 리소스에 StringTable을 다 포함시켰는데요.

이걸 대체 어떻게 테스트하죠? 한국어만 나와요!

윈도우에서는 유니코드 지원 프로그램의 언어를 바꾸는 기능이 없는 것 같아요. 맥에는 있는 것 같은데.

AppLocale은 유니코드 프로그램에다 쓰는 게 아닌 것 같고, 어떻게 변경하죠?

shi1521의 이미지

정규표현식을 통해 파일의 이름 검색

[개발 환경]
- 우분투 13.10
- C언어

[자료구조]
struct finfo
{
char filename[4096];
+
파일의 정보들...
};

- 자료는 디렉터리의 경로를 주면 그 하위까지 자료들이 저장

- 정규 표현식을 통해 저장된 자료들의 파일 이름을 비교해서 일치할 경우 파일 이름과 정보들을 출력
이러한 프로그램입니다.

프로그램 구현은

1. 자료들을 단일 연결 리스트로 저장
2. 정규 표현식을 regcomp라는 함수로 컴파일
3. regexec로 컴파일된 정규식과 파일의 이름을 비교
4. 일치할 경우 파일의 이름과 정보를 출력
5. 3, 4번을 연결 리스트의 끝까지 반복

이러한 구조로 구현하였는데 이럴 경우 자료들의 개수가 증가할수록 비교 횟수도 증가하여서 검색 성능이 떨어지는 거 같습니다.

gurumong의 이미지

[C언어] 일반적인 자료형에 대한 자료구조를 만들수가 없을까요?

자료구조나 알고리즘 책을 몇권 보았습니다만
대부분 오래된 변형 알골 언어 등으로 핵심코드만을 보여주고 해설하는 식이더라구요

실제로 C언어에서는 구현하여 사용하기에는 많은 부분은 좀 더 고려해봐야 할거같은데(예: 재사용 가능한 모듈화)
특히나 일반적인 자료형에 대한 자료구조를 만들수가 없는것인지 의문이 있습니다

C++에서는 템플릿이 있어서 유용한것으로 알고있는데
그냥 C언어에서는 어떻게 할 수 있을까요?

그리고 이러한 C언어로서 실용적인 자료구조 구현에 대해 다룬 책이 없을까요?

nicelhc13의 이미지

linux OS를 x86 에뮬레이터에 포팅하려합니다..

오랜시간 작업하다 한가지 여쭤볼게 있습니다.

linux를 에뮬레이션한 가상 보드에 포팅하려면, 가상 보드가 x86의 기능을 완벽하게 수행해야하는지요?

linux의 기능을 최소화 하더라도 올릴 수 있는 방법은 없을런지요?

예를 들어 외부인터럽트 같은 기능이 없으면 올라갈 수가 없습니까?

작업시간이 약간 부족하기에 완벽한 리눅스 기능을 올리는게 아니라

올라 갔다는 것을 보여주기만 하면됩니다.

몇 주일간 고민을 해보아도 해결이 안되네요 ㅜㅜ

도움 부탁드립니다 흑

(기능이 완벽하지 않으면 정확히 말해 리눅스가 아니게 된다는 것도 인지하고 있습니다만 ㅜㅜ)

mahapunch의 이미지

C // 쿼리 결과 고속 파일 저장 방법?

HP-UX 시스템에서 C 프로그램으로 쿼리 결과를 파일로 저장하는 업무를 진행하는 중입니다.
저장해야 하는 파일 사이즈는 150기가 이상이고 export 소요시간도 상당히 제한되어 있는 상황입니다.
업무 스펙에 맞는 프로그램 퍼포먼스가 안나와서 고수분들의 조언을 구합니다.

쿼리 결과를 지역변수에 저장하여 지역변수 writeBuffer에 모아 놨다가 일정용량이 되면 파일에 쓰는 식인데
코드는 대강 아래와 같습니다..
======================================================================================

FILE * fp = fopen(pathName, "a");
char col1[MAX_SIZE_COL1] = {0, };
..
char col10[MAX_SIZE_COL10] = {0, };
char writeBuffer[1024 * 1024 * 128];

페이지

프로그래밍 QnA 구독하기