I'm working from an example piece of code that allocates a relatively large local array. (32768 to be precise) When I try the same I'm getting behaviour that appears to be a stack overflow. Now I was wondering if my example has maybe set the stack to be larger then my application. Is this possible? if so how?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
With the Microsoft compiler you can use /F to set the stack size, however it seems like you should just allocate the object on the heap. You should have a reason you're allocating this on the stack rather than the heap.
Edit: This page gives a good cross-platform breakdown, though it may be dated.
回答2:
You can use the /F compiler flag to set the default stack size, or specify it as the second parameter to the CreateThread function.
回答3:
Rather than mess with with the stack size, why don't you simply use a std::vector or even dynamically allocate an array yourself?
回答4:
You could create a new thread for this work. You can generally specify the size of the stack when creating a thread, and certainly with vs2008's CreateThread()
function