1-C memset 배열 초기화 질문-C memset 배열 초기화 질문
안녕하시렵니까
제가 문제를 한번 풀어봤는데 memset으로 배열을 초기화 했을 때 초기화가 잘 안되는 것을 확인 했습니다
아래 코드에서는 carcnt[2]부분 입니다
혹시 제가 함수 사용에 있어 실수 한 부분이 있는지 왜 이런 일이 일어나는 것인지 궁금합니다
아래 코드는 = {0, }를 사용해 통과한 코드이고 주석 부분 풀고 = {0, }부분 지워 주시면 문제의 코드가 나옵니다
강의 재밌게 잘 보고 있습니다 감사합니다 ^^7
http://boj.kr/5f431b3ae8254d5d9a978ec62d3ca827
답변 2
1
안녕하세요 mm님 ㅎㅎ
memset(parking, 0, 100);mm님 코드를 보시면 sizeof부분이 100으로 초기화가 되어있는데 이는 int타입(4의 크기) * 25개의 배열만 초기화를 한다는 의미입니다.
sizeof(parking) 이런식으로 초기화를 해주어야 합니다.
memset(carcnt, 0, 4);예를 들어 이거자체는 carcnt의 첫번째 정수만 0으로 초기화를 한다는 의미가 되어버립니다.
이 때문에 에러가 발생이 된 것 같습니다.
sizeof를 잠깐 볼까요?
#include <iostream>
#include <string>
using namespace std;
int main(){
int n;
cout << sizeof(n) << "\n";
return 0;
}
// 4앞의 코드는 4를 반환합니다. int타입은 4바이트이기 때문이죠. ㅎㅎ
memset은 sizeof를 기반으로 초기화를 하기 때문에 이부분 참고부탁드립니다.
교안내의 다음 부분 참고부탁드립니다.

또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다.
memset을 사용하여 배열을 초기화했을 때 예상한 초기화가 제대로 이루어지지 않는다고 하셨군요. 이 문제는 memset의 특성으로 인해 발생할 수 있습니다. memset은 메모리를 바이트 단위로 처리하기 때문에 배열의 각 요소가 char가 아닌 경우, 즉 int나 double 등의 데이터 타입일 경우 예상치 못한 값이 들어갈 수 있습니다. memset은 0이나 -1로 초기화할 때 주로 사용됩니다.
memset을 사용하여 배열을 초기화할 때 올바르게 초기화되지 않는 부분은 다음과 같은 이유 때문일 수 있습니다:
memset은 각 배열 요소를 바이트 단위로 초기화합니다. 만약 배열 타입이int라면, 각 요소는 4바이트(또는 시스템에 따라 다름)를 차지하게 됩니다.memset이 이 4바이트를 각각 초기화하지 않고, 바이트 단위로 초기화하기 때문에 문제가 발생할 수 있습니다.memset은 주로 모든 요소를0으로 초기화하거나 바이트 값으로만 초기화할 수 있기 때문에,int형 배열에 다른 값으로 초기화하려면 주의가 필요합니다.memset을 사용해 특정 값을 설정하려면 메모리 크기에 대한 올바른 이해와 적절한 초기값 설정이 필요합니다. 대신std::fill같은 함수가 다른 초기화 값에 대해 더 적합할 수 있습니다.
이를 해결하려면 std::fill 함수를 사용하는 것이 좋습니다. std::fill 함수는 배열이나 벡터의 요소를 통일된 값으로 초기화할 수 있어 memset의 한계를 극복하는 데 적합합니다.
관련 질문들도 살펴보신다면 도움이 될 것 같습니다:
- 알고리즘 교안 p.70 memset 관련 질문
- 2-S 1325번 효율적인 해킹 문제 질문
이 답변이 mmmg763님의 궁금증을 해결하는데 도움이 되길 바랍니다. 😊
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
6-H 체점 관련 질문
0
8
0
채점서버 연결 관련 질문입니다
0
33
1
삼성 s직군
0
34
0
삼성 코테 없어짐
0
82
1
코딩살구클럽 가입부탁드립니다
0
41
2
코딩살구클럽 가입 요청 확인부탁드립니다
0
35
2
5-S 테스트 케이스 질문
0
37
2
코살 문제풀이 환경
0
54
2
2 - T 오큰수 문제가 있는 것 같습니다.
0
46
1
추천 추가문제들
0
44
2
프로그래머스 코테 환경 관련해서 질문드립니다.
0
50
2
해당 문제에 대한 채점이 코딩살구클럽에서 올바르게 처리되지 않습니다.
0
44
2
균형 이진 트리 설명 시 높이 숫자
0
33
2
4-H 질문드립니다.
0
37
2
1-K 질문드립니다.
0
43
2
대기업 인적성 시험 질문
0
43
2
4-C 질문드립니다
0
43
2
[수학숙제 / BOJ 2870] 채점 서버 오작동
0
40
1
코테 준비 질문
0
58
1
살구클럽가입 요청드려요
0
42
2
1-I 문제 질문
0
46
2
코딩살구클럽 가입
0
61
2
AI 코딩 도구 사용 시 학습 방법 조언
0
56
2
코딩살구클럽 오류
0
67
2





