하나의 소스를 여러 파일로 나누어서 컴파일.
글쓴이: i_wish_awk_sed_perl / 작성시간: 화, 2004/04/06 - 4:59오후
함수별로 파일에 넣었는데 컴파일 하니 에러가 나네요. 오브젝트 파일을 생성할때까지만 해도 문제 없는데 실행할때 세그먼트폴트가 납니다.
/* source.h */ void display_name(); void display_nick();
/* source.c */
#include <stdio.h>
#include "source.h"
int main(int argc, char *argv[])
{
display_name();
display_nick();
return(0);
}
/* sub1.c */
void display_name(void)
{
char *name;
strcpy(name, "name");
printf("%s\n", name);
}
/* sub2.c */
void display_nick(void)
{
char *nick;
strcpy(nick, "nick");
printf("%s\n", nick);
}
Forums:


strcpy 들의 대상이 메모리 할당이 하고 있습니다.
strcpy 들의 대상이 메모리 할당이 하고 있습니다.
---
http://coolengineer.com
:? 한파일일때는 정상이던가요? :D
:?
한파일일때는 정상이던가요? :D
Re: 하나의 소스를 여러 파일로 나누어서 컴파일.
char *name;
char *nick;
후에 저 두 포인터 변수를 위한 메모리 할당 부분이 없어서 난것 같습니다.
이 부분을 추가하면 일단 원하는 결과를 얻을수 있을것 같습니다.
malloc()함수를 사용한 메모리 할당에서 5를 곱하는 이유는
name과 nick의 글자수가 4이지만 마지막에 NULL값을 위한
공간이 필요하기 때문입니다.
----
use perl;
Keedi Kim
Re: 하나의 소스를 여러 파일로 나누어서 컴파일.
char *name; name = (char *)malloc(5 * sizeof(char)); /* 이부분이 추가되는 부분 */ strcpy(name, "name"); printf("%s\n", name); free(name); /* 이부분이 또 추가되야 하는 부분 입니다 :) */char *nick; nick = (char *)malloc(5 * sizeof(char)); /* 이부분이 추가되는 부분 */ strcpy(nick, "nick"); printf("%s\n", nick); free(nick); /* 이부분이 또 추가되야 하는 부분 입니다 :) */이렇게 안하면 메모리가 셀듯 하군요 =3=33
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
댓글 달기