티스토리 뷰
알고리즘 공부를 하면서 막상 동적 할당을 사용하려는 경우에 왜 정적으로 할당하지 않고 동적으로 할당하는지에 대한 의문이 생겼다. 내가 동적 할당을 사용하는 이유는 '메모리를 효율적으로 사용하기 위해서'라는 생각을 막연하게 가지고 있었다. 그래서 이유를 제대로 알기 위해서 찾아봤다.
아래 블로그에 내가 궁금했던 굉장히 자세한 내용들이 설명 돼 있다. 참고하자!
그런데 글을 읽다보면 헷갈리는 부분들이 생긴다. gcc환경에서는 아래와 같은 코드가 컴파일이 문제없이 된다.
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
arr[i] = i;
printf("%d",arr[i]);
}
}
하지만 Visual Studio에서는 컴파일이 안되는 경우가 있었다. 그래서 되는 경우가 있고 안 되는 경우가 있어서 굉장히 헷갈렸다. 그래서 구글링을 해보니 VLA이라는 용어로 쓰이는 것을 알 수 있었다. 해당 개념도 아래 블로그에 자세히 설명돼 있다.
결론
즉 VLA을 사용하지 않고 동적할당을 하는 것이 일반적이다! 컴파일러마다 사용이 될 수도 안될 수도 있다.
또 정해지지 않은 변수의 크기만큼 배열로 선언해야 할 때, vector를 사용해서 선언하자.
728x90
반응형
'TIL(Today I Learn)' 카테고리의 다른 글
[JS] 자바스크립트 '==' 와 '==='의 차이 (0) | 2021.08.05 |
---|---|
[CS] 기초 지식들 (0) | 2021.06.30 |
티스토리 코드블럭 커스터마이징 참고사이트 (0) | 2020.12.30 |
Makefile에 관한 사이트 정리 (0) | 2020.12.28 |
Windows 10 Ubuntu 백스페이스, vim 경고음 없애기 (2) | 2020.12.23 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 백준
- vscode commit vi
- React
- 자바스크립트
- HEXO
- flexbox
- 알고리즘
- JS
- 42서울
- windows 10 ubuntu
- 42seoul
- git vi
- 프로그래머스 자바
- 프로그래머스 코딩테스트
- 42서울 합격 후기
- css
- 마크다운 이미지 업로드
- 42서울 라피신
- html
- Git
- JavaScript
- c언어 함수
- C언어
- 42서울 합격
- 프로그래머스 코테
- vscode
- c언어알고리즘
- C언어 문제
- C언어문제
- 프로그래머스 카카오
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함