스택 사용량 계산

C++ 2015. 3. 25. 03:51

DEBUG/RELEASE 에서 모두 체크해야 함. (최적화로 인해 다르게 나올 수 있음.)

_alloca 사용하려고 확인해보려고 한건데 RELEASE 에선 alloca 사이즈가 안잡힘.

그리고 신용이 안감


//test.h

#pragma once

#include <malloc.h>

class Test {

public:

void test() {

printStackSize();


{

char buf[1024];

for (int i=0; i<sizeof(buf); ++i) buf[i] = 'i';

buf[sizeof(buf)-1] = 0;

/*

char* buf = (char*)_alloca(1024);

for (int i=0; i<1024; ++i) buf[i] = 'i';

buf[1024-1] = 0;

*/

printf("%s\n", buf);

}


printStackSize();

}


void printStackSize(int depth = 0) {

printf("total size : %d byte\t%d KB\n", top_-(char*)&depth, (top_-(char*)&depth)/1024);

}


char* top_;

};




//main.cpp
#include "stdafx.h"
#include "test.h"

char* top = 0;

int _tmain(int argc, _TCHAR* argv[])
{
top = (char*)&argc;

Test test;
test.top_ = top;

test.printStackSize();
test.test();
test.printStackSize();

return 0;
}