프로그래밍 QnA

iyouhe의 이미지

alloca()의 용도에 대해서

alloca()에 대해서 제가 이해한건
이건 메모리가 힙에 잡히지 않고 스택에 잡히므로 프로그램이나 루틴 종료시 free()하지 않아도 된다고 알고 있거든요. 실제로 alloca메로리를 free()시켰는데 그 부분에서 세그멘트 폴트가 나는 경우도 있고요.

특히 가변적인 스트링 비교함수에서 아래와 같은 표현을 쓰는 것을 봤는데 이렇게 하면 빠른가요?

int
fnmatch (const char *pattern, const char *string, int flags)
{
register char *p, *pat, *n, *str;
register char c;

strcpy(n = alloca(strlen(string)+1), string);

envy100의 이미지

이상하게 있어요

ipcs -a명령을 화일로 저장했어요
그래서 cat으로 보면 마지막 cbyte가 6인데요
vi로 보면 마지막 cbyte가 0으로 나와요
왜 그런건지 어떻게해 정상적으로 나오는지 좀 알려주세요

bxhs의 이미지

STRING에 대해서 궁금한점..

C로 string을 구현해보려고 하다가..
몇가지 생각할게 떠오르더군요.
속도와 메모리의 딜레마라고 할까요.

string에 ch를 집어넣을때
현재 string의 내부 버퍼보다 커지면
버퍼를 realloc 해야할것 같은데...

이때 그 메모리 증가량을 어떻게 잡는게 가장 좋을까요

너무 작게 잡으면 글자가 들어올때마다 계속 realloc될것이고..
너무 크게 잡으면 빈 메모리가 많을거 같습니다.

여러분은 어떻게 생각하시는지...궁금합니다.

어떤날의 이미지

#pragma 많이 사용하나요?

잡지를 보다가 프로그램 팁중에 #pragma 를 이용한 것이 있었습니다
어디서 보긴 봤던것 같은데...

typedef struct _TMP{
	int n1;
	long l;
	char a[1];
	short s;
	int n2;
	char b[2];
} TMP;

int 
main()
{
	TMP tmp;
	
	printf("Size : %d", sizeof(TMP));
	return 0;
}

int형이 4바이트라고 했을때 TMP의 사이즈는 17 바이트 입니다.
하지만 위의 코드를 실행하면 20 바이트가 출력됩니다.

이 문제를 해결하기 위해

judaspro의 이미지

디바이스 드라이버 간단한 프로그램...

/*hello.c*/
#include <linux/kernel.h>
#include <linux/module.h>

int init_module()
{
printk("hello, world\n");
return 0;
}

void cleanup_module()
{
printk("bye module\n");
}

이렇게 간단한 프로그램을 컴파일 시켰더니...
#gcc -D__KERNEL__ -D_LINUX -DMODULE -c -O2 hello.c
In file included from hello.c:2:
/usr/include/linux/module.h:60: parse error before 'atomic_t'
/usr/include/linux/module.h:60: warning: no semicolon at end of struct or union
/usr/include/linux/module.h:60: warning: no semicolon at end of struct or union
taeyeung의 이미지

C로 인터프리터를 만들고 싶습니다. 참고 자료 좀 알려 주세요

제목과 마찬가지로 C언어로 인터프리터를 만들어 보고 싶습니다.

참고 자료( 사이트나, 책 ) 좀 알려 주세요.

개인적으로 sourceforge.net과 www.codeguru.com

찾아 보았습니다.

sunbee의 이미지

raw socket 사용시 질문~

제가 raw socket을 생성해서 source ip 를 속여서 udp로 다른 사이트에 메세지를 보낼려고 하는데요..

tcpdump 로 패킷이 나가는지 확실히 확인을 했는데 받는쪽에서는 패킷이 안들어 오네여..

왜 이런겁니까?

envy100의 이미지

문자 타입으로된 16진수를 어떻게 int에 저장하나요

:?
16진수를 화일에서 문자열로 읽어와서 다시 int형 변수에 넣으려고 하는데
atoi는 안돼네요
방법좀 알려주세요

litwind의 이미지

루프백을 제외한 주소를 바인딩하고 싶습니다.

server.sin_addr.s_addr = htonl(INADDR_ANY);

이렇게 하니까 루프백까지도 바인딩하고 있네요.

-_-; 당연한 얘기지만...

루프백을 제외하고 바인딩하고 싶습니다.

방법이 없나요?

ddarkangel의 이미지

vc 에서는 이상이 없는데 g++에서 컴파일 오류가 납니다.

뭐가 문제인지 모르겠습니다.
어떻게 수정해야 할까요??
소스는 다음과 같습니다.
-----------------------------------------------------------------------
[code:1]
#include <iostream>
#include <stdio.h>

void fnc();
void sub(void *);

template <class utype> class cls
{
public:
cls(){
};

cls(void *ai){
printf("CLS : %x\n", ai);
};
};

int main(void)
{
printf("main() : %x\n", fnc);

페이지

프로그래밍 QnA 구독하기