using namespace std;
#include <iostream>
int main(int argc, char** argv)
{
int data;
cin >> data;
char caBuf[data];
cout << endl << "input data" << data << "size:" << sizeof(caBuf) << endl;
return true;
}
valgrind 테스트 결과 메모리 누수가 없는 걸로 나오네요. 스택영역이 맞는 것 같습니다.
$ valgrind --tool=memcheck --leak-check=full ./main
==19248== Memcheck, a memory error detector
==19248== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==19248== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info
==19248== Command: ./main
==19248==
10
input data10size:10
==19248==
==19248== HEAP SUMMARY:
==19248== in use at exit: 0 bytes in 0 blocks
==19248== total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==19248==
==19248== All heap blocks were freed -- no leaks are possible
==19248==
==19248== For counts of detected and suppressed errors, rerun with: -v
==19248== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
C에서는 이미 C99부터 표준으로 지원되는 기능입니다.
C++에서는 STL이 있기 때문인지 지금도 표준에 안 들어가있지만요.
하지만 그다지 유용하지도 않고 보안상으로도 오버플로우되기 쉽기 때문에 안쓰는게 좋습니다.
오버플로우되지 않는게 확실한 작은 크기라면 그냥 적당한 크기의 정적 크기 배열을 쓰면되고요.
같지 않습니다. 해당 코드는 malloc이나
같지 않습니다.
해당 코드는 malloc이나 new와 같이 힙에 메모리를 할당하지 않고 스택에 메모리를 할당합니다.
또한 C++에서는 Variable Length Array가 표준이 아닙니다. g++은 extension으로 이를 지원하는 것으로 알고 있고, vc++은 사용하지 않아서 잘 모르겠네요.
정말이네요. 저게 정말로 되는가 싶어서 테스트
정말이네요.
저게 정말로 되는가 싶어서 테스트 해봤습니다.
valgrind 테스트 결과 메모리 누수가 없는 걸로 나오네요. 스택영역이 맞는 것 같습니다.
---------------------------------
제일 왼쪽이 저입니다 :)
C에서는 이미 C99부터 표준으로 지원되는
C에서는 이미 C99부터 표준으로 지원되는 기능입니다.
C++에서는 STL이 있기 때문인지 지금도 표준에 안 들어가있지만요.
하지만 그다지 유용하지도 않고 보안상으로도 오버플로우되기 쉽기 때문에 안쓰는게 좋습니다.
오버플로우되지 않는게 확실한 작은 크기라면 그냥 적당한 크기의 정적 크기 배열을 쓰면되고요.
그렇군요.
잘되니 다행입니다. ㅇ_ㅇ;;
이렇게. 정적 배열에 크기를 입력 받은 만큼에 크기로. 지정하는 방법이 있다니 몰랐습니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
+1
저렇게 되는 게 C에서는 표준이었군요. 정보 알아갑니다. 다음 코드에서 정상적으로 동작하는 것을 확인했습니다.
compiler: ideone.com
저는 이렇게 생각했습니다.
C 에서는 리턴값이 없는데도 되네요.
C99 strict 에서는 안됩니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기