malloc 함수 관련입니다 ....
라
2023.04.01
int go(int);
char *x1 ;
void main(){
char *x2 ;
x2 = (char *)malloc(sizeof(char *)) ;
while(1){
go(1) ;
}
}
int go(int a){
x1 = (char *)malloc(sizeof(char *)) ; ---- 이부분입니다...
}
간단하게 표현해본것인데여
메인안에서는 x2 를 malloc 으로 초기화가 가능한데 ,
전역변수(x1)로 선언된 것을 함수 내에서 초기화 하려고 하니까
메모리에러가 나옵니다... 첨에는 나오지 않다가 몇번 while문을 돌리다보면 뜨네여 ..
go() 함수 안에서 x1 전역변수 어떻게 초기화 하는지 궁금합니다 ..
참고로 x2에 들어가는 것은 동적 메모리할당으로 그 크기는 4byte를 넘을수가 있습니다.
x1 = (char *)malloc(100) ; 이렇게 정수로 선언하는것 말구여 ..
(char *)malloc(sizeof(char)); 이것도 안 대네욥 ~~
-
미국녀
while(1)은 무한 반복이죠.
malloc으로 메모리를 계속 할당받다보면 어는 순간 메모리가 고갈되어 더 이상 할당 받을 수 없게 될 겁니다.
할당받았던 메모리는 사용이 다 끝난 후에는 free로 해제시켜주는 게 좋습니다.