250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 인프라
- 서버
- 여행 #
- JAVA #객체지향 #프로그래밍 #언어 #IT #기초
- 이탈리아
- 계획
- JAVA #언어 #프로그래밍 #IT #개발 #코딩
- 내심정
- 파이썬
- 메시지 큐
- 영국
- #DB#SQLD#자격증
- 리눅스
- RabbitMQ
- 예약
- 유럽
- 샐러리
- 경험
- 배낭여행
- 유럽여행
- JAVA #언어 #프로그래밍 #코딩 #static #정적함수 #정적변수 #클래스
- 추억
- 1달살기
- 준비
- 실비용
- IT
- ip
- 겨울
- 여행
- 일정
Archives
- Today
- Total
YoonWould!!
[C++] memset 함수 본문
728x90
환경 및 선수조건
- C, C++
목적
- memset함수는 어떤 메모리의 시작점부터 연속된 범위를 어떤 값으로(바이트 단위) 모두 지정하고 싶을 때 사용하는 함수이다.
기본 함수 구조 및 매개변수
void * memset ( void * ptr, int value, size_t num );
- ptr : 채우고자 하는 메모리의 시작 포인터(시작 주소)
- value : 메모리에 채우고자하는 값. int형이지만 내부에서는 unsigned char(1 byte)로 변환되어서 저장된다.
- num : 채우고자 하는 바이트의 수. 즉, 채우고자 하는 메모리의 크기
코드
- 코드
#include <string.h> // string.h 파일이 필요합니다. #include <stdio.h> int main (){ char a[20]; // 1바이트마다 모두 65로 초기화 // 배열을 채울 때는 sizeof()함수를 사용하면 됩니다. // sizeof 함수 - 배열의 전체 바이트 크기를 반환합니다. memset(a, 65, sizeof(a)); // 출력을 통해 확인 for(int i=0; i< (sizeof(a)/sizeof(char)); i++){ printf("%c\n",a[i]); } }
memset 함수를 사용하는 이유
대체로 memset함수는 특정 범위에 있는 연속된 메모리에 값을 지정하고 싶을 때 사용하는데 for문보다 더 빠른 속도가 나올수가 있다.
여기서 나올수가 있다라고 표현한 이유는 컴파일러 그리고 컴퓨터 아키텍처에 따라서 다르기 때문이다.
자세한 내용은 아래 두 참고자료를 보면 Quora에는 어셈블리 코드로 비교한게 나와있고 Stack Overflow에는 관련한 내용들이 나와있다.
참고자료
- https://www.quora.com/What-makes-memset-so-fast
- https://stackoverflow.com/questions/7367677/is-memset-more-efficient-than-for-loop-in-c
728x90
'<프로그래밍> > C++' 카테고리의 다른 글
[C언어]자료형과 포인터 (0) | 2018.06.21 |
---|---|
scanf(“%1d”,&num) 정수 1자리씩 입력 받기 (0) | 2018.04.09 |
cout,cin컴파일 속도 높이기(시간초과 해결법) (0) | 2018.04.08 |