버퍼를 제거 하는 방법이 없을까요??
글쓴이: trivial / 작성시간: 토, 2004/04/10 - 8:31오후
C에서
char test[20]에 "hello world!!" 이란 문자를 넣었습니다.
다시 test를 재 사용을 위해 이전 값을 지울수 있는지요
아니면 malloc()을 사용하여 할당 받은 공간에
strcpy ()를 사용하여 복사한 것을 제거 할수 있나요
char *buff;
buff = (char*)malloc(20);
strcpy(buff, sss);
이렇게 했을때요 할당 받은 공간을 다시 free() 만 하면 다시 buff에는 예전 값을
지우고 다시 사용할수 있나요 ...어찌 하는지...
쓰고나니 이상네요 말 하는게 ^^;
Forums:
bzero 나 memset 이 있고요.걍 새로운 데이타로 덮어 쓰시면
bzero 나 memset 이 있고요.
걍 새로운 데이타로 덮어 쓰시면 될듯 한데요?
별 고민 안하셔도 될듯
Re: 버퍼를 제거 하는 방법이 없을까요??
세번째에서 free한다는 것은 메모리를 비워주는게 아니라 쓰려고 할당받았던 메모리를 풀어준다는 뜻이므로 free한 buff에 또 값을 쓴다면 메모리 오류를 만나게 될 가능성이 높습니다.
그리고 첫번째 두번째는 무슨 의도이신지는 모르겠지만 굳이 썼던 값을 지워주거나 할 필요는 없습니다. 윗분 말씀대로 그냥 덮어써버리면 그만이니까요. 메모리의 재사용은 지워주어야 쓸수있다거나 하는 제약은 없습니다. 지우는 것 자체도 메모리를 쓰는 것이므로 재사용하는 것이나 다름없지요. 오히려 덮어쓰는데 제약이 없어서 문제가 생길 수는 있지만...
사용이 끝난 메모리를 memset같은 걸로 청소해주셔야 직성이 풀리실 정도로 결벽증이신건 아니겠죠? -_-;;
노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5
댓글 달기