深入理解栈损坏问题及其避免策略
1. 栈的基本概念
栈是一种常见且知名的数据结构,遵循后进先出(LIFO)原则,类似于一叠纸张,新放入(push)的纸张在顶部,取出(pop)时也从顶部拿取。在 Windows 系统中执行代码时,栈是操作系统分配给运行线程的一块内存,用于跟踪函数调用链,包括局部变量分配、参数传递等。每次进行函数调用时,会创建一个新的栈帧并压入栈中,随着函数调用增多,栈会不断增长。
为了更好地理解栈的工作原理和可能出现的损坏情况,我们来看一个示例代码:
#include <windows.h>
#include <stdio.h>
#include <conio.h>
DWORD WINAPI ThreadProcedure(LPVOID lpParameter);
VOID ProcA();
VOID Sum(int* numArray, int iCount, int* sum);
int __cdecl wmain ()
{
HANDLE hThread = NULL ;
printf("Starting new thread...");
hThread = CreateThread(NULL, 0, ThreadProcedure, NULL, 0, NULL);
if(hThread!=NULL)
{
printf("success\n");
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
}
超级会员免费看
订阅专栏 解锁全文
3593

被折叠的 条评论
为什么被折叠?



