Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[5243] Re:memset함수 사용중에...
최준호.스페로 [sparrow] 1849 읽음    2005-08-25 11:38
안녕하세요 스페로 입니다.

질문 하신 프로그램에 소스는 돌려 보지는 않고 대충 보았는데요..

메모리에 예를 들어 size를 4라고 입력 했을때

4x4 라는 격자에 * 과 $ 를 배열 하기 위한 프로그램이라고 생각 됩니다.

메모리는 4바이 4 같은 네모의 모양을 하지 않고 일직선상에 놓여 있지만

마지막 printf로 출력할때 표시를 하게 한것입니다.

memset 에서 buf포인터에 위치와 *를 집어 넣을 위치 , $를 집어 넣을 위치를 계산 하는 것이죠
이러한 특수한 목적에서 사용할때가 아닌 이상 memset은 말씀 하신 거처럼

malloc 에 사용한 사이즈 만큼
0x00 (NULL) 이나 초기화 할 데이터로 그냥 초기화 하는 코드로 많이 이용됩니다.
malloc로 메모리를 할당해도 해당 포인터 부터 할당한 사이즈 내에 쓰레기 데이터가 있으므로
사용전에 깨끗이 정리 하는 목적이죠.

그럼 좋은 하루 되십시오.


미니 님이 쓰신 글 :
: #include <stdio.h>
: #include <malloc.h>
: #include <memory.h>
:
: void main()
: {
:     char *buf;
:
:     int i , size;
:
:     printf(" 4 이상의 수를 입력하시오. ");
:     scanf("%d", &size);
:
:     printf("\n");
:
:     buf = (char *)malloc(sizeof(char) * size * size);
:
:     i = 0;
:     while(i < size) {
:         memset(buf + (size*i++), '*' , size );<====요기랑,
:
:         if(i < size)
:             memset(buf + (size*i++), '$' , size );<====요기요!!!
:         else
:             break;
:     }
:
:     for(i = 1; i <= size*size; i++)
:     {
:         printf("%3c", buf[i-1]);
:         if(i%size == 0) printf("\n");
:     }
:     free(buf);
: }
:
:
: 이 memset부분에서
: buf + (size*i++)<==요거는 어케 쓰이는거죠? buf에 malloc 함수로 충분한 메모리를 설정했는데
: 왜 굳이 저렇게 메모리를 셋팅하는지...이해가 안갑니다...

+ -

관련 글 리스트
5242 memset함수 사용중에... 미니 1957 2005/08/25
5243     Re:memset함수 사용중에... 최준호.스페로 1849 2005/08/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.