스택에 메모리를 할당하려고합니다.C++에서 동적 스택 할당
저는 _alloca/alloca에 대해 들었습니다. 그리고 저는 이것들이 컴파일러에 특정한 것들이라는 것을 알고 있습니다.
그래서, 온 - 업 내 자신의 솔루션 (있을 수있는 그것은 자신의 결함이다) 그리고 당신이/검토 한번 있도록 개선하고 싶은 모두를 위해 우리는이 코드를 작동해야합니다 :
/*#define allocate_on_stack(pointer, size) \
__asm \
{ \
mov [pointer], esp; \
sub esp, [size]; \
}*/
/*#define deallocate_from_stack(size) \
__asm \
{ \
add esp, [size]; \
}*/
void test()
{
int buff_size = 4 * 2;
char *buff = 0;
__asm
{ // allocate
mov [buff], esp;
sub esp, [buff_size];
}
// playing with the stack-allocated memory
for(int i = 0; i < buff_size; i++)
buff[i] = 0x11;
__asm
{ // deallocate
add esp, [buff_size];
}
}
void main()
{
__asm int 3h;
test();
}
을
VC9로 컴파일되었습니다.
어떤 결함이 있습니까? 예를 들어, ESP에서 빼기가 "모든 종류의 CPU"에 대한 해결책인지 확신 할 수 없습니다. 또한 주석 처리 된 매크로를 작동시키고 싶지만 어떤 이유로 든 할 수 없습니다.
을 보라 => "의" –
참고 "그건"은 "__asm의 INT의 3H는"디버그에가는 사람들을위한 것입니다, 거기 스택 "매우를 볼 수 있습니다 ... 올리 - 디버거 말 분명히". – Poni
Haha Konrad - 글쎄, 모두들 - 내가 그걸 포기 했으므로 문법 기술을 검토/개선하지 마라. (: – Poni