티스토리 뷰
알고리즘 공부를 하면서 막상 동적 할당을 사용하려는 경우에 왜 정적으로 할당하지 않고 동적으로 할당하는지에 대한 의문이 생겼다. 내가 동적 할당을 사용하는 이유는 '메모리를 효율적으로 사용하기 위해서'라는 생각을 막연하게 가지고 있었다. 그래서 이유를 제대로 알기 위해서 찾아봤다.
아래 블로그에 내가 궁금했던 굉장히 자세한 내용들이 설명 돼 있다. 참고하자!
동적 메모리 할당 개념잡기
동적 메모리 할당 개념잡기 출처 : http://www.winapi.co.kr/, Win32 Api 연구 사이트 작성 : 몽키몽키(c...
blog.naver.com
그런데 글을 읽다보면 헷갈리는 부분들이 생긴다. 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이라는 용어로 쓰이는 것을 알 수 있었다. 해당 개념도 아래 블로그에 자세히 설명돼 있다.
[C/C++]동적할당 없이 배열 크기를 변수로 정하고 싶다면, VLA!
VLA란?VLA는 Variable Length Arrays의 약어로, 가변길이배열을 뜻한다.보통 배열 크기는 상수로 ...
blog.naver.com
결론
즉 VLA을 사용하지 않고 동적할당을 하는 것이 일반적이다! 컴파일러마다 사용이 될 수도 안될 수도 있다.
또 정해지지 않은 변수의 크기만큼 배열로 선언해야 할 때, vector를 사용해서 선언하자.
'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
- 42서울 합격
- windows 10 ubuntu
- 마크다운 이미지 업로드
- 프로그래머스 카카오
- 프로그래머스 코테
- 42seoul
- 백준
- vscode commit vi
- vscode
- c언어 함수
- 자바스크립트
- C언어
- flexbox
- React
- 42서울 합격 후기
- 42서울
- 알고리즘
- 42서울 라피신
- css
- C언어문제
- c언어알고리즘
- 프로그래머스 자바
- JavaScript
- git vi
- 프로그래머스 코딩테스트
- C언어 문제
- HEXO
- JS
- html
- Git
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |