我使用MSVC++ 2012編寫C++,我的代碼是針對x86平臺的。我有一種情況,寫一個函數(除其他外)可以在CALLING函數的堆棧上分配一些內存將是有利的。我不打算在這篇文章中討論這樣做的智慧,而只是考慮技術上的可行性。在調用者堆棧上分配內存
我的實現計劃是將我的函數作爲帶內聯彙編中的自定義prolog代碼的裸函數編寫。在序言中,我將首先確定需要多少內存,然後將返回地址,參數和此指針向下移動到堆棧中。最後我會調整堆棧指針的數量。如果我沒有弄錯,這會在調用函數的堆棧上創建一個區域。
有沒有人在該計劃中看到任何漏洞?
不是真的,不,假設你沒有搞砸彙編程序,並且有足夠的堆棧空間:)我認爲堆棧需要在返回刪除分配空間後的某個時刻修復? –
與['alloca'](http://man7.org/linux/man-pages/man3/alloca.3.html)的功能類似? –
這可能是一個XY問題。 'alloca'就像@CaptainObvlious所說的那樣做了你想要的,但是沒有任何背景,所有的解決方案都可能毫無意義 –