关于回调函数(窗口过程)头部的几个变量问题
LRESULT CALLBACK WinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){
HDC hdc;
PAINTSTRUCT ps;
RECTrect;
switch (message){
这个是回调函数的一部分,我没全部复制下来
HDC hdc;
PAINTSTRUCT ps;
RECTrect;
这三个变量每次windows调用这个回调函数的时候,是不是都会在内存中动态生成,然后,退出回调函数后又给释放了呢?要是这样的话,会不会感觉有点冗余呢。为何不把这三个变量定义在WinMain函数的外面呢?况且,假如我后期程序扩充越来越大,这个回调函数中头部的变量定义越来越多的话,每次执行回调函数不是都要申请一大片内存,然后又释放一大片的内存了呢??
如何破呢??
大家觉得我的这个担心有没有必要的?或者说,这点内存跟执行速度不必考虑呢?
这些变量是局部变量,存在于栈中,生存于函数开始,结束于函数返回,系统会自动分配栈的空间,所以,你不用担心局部变量的内存问题。相反,把一些只在局部用的变量,定义成全局的才是浪费,局部的可以做到,随用随取,而全局的只能等到程序结束之后,才能释放,而且会造成代码阅读的困难。
你的担心是多余的,这点内存实在是太小了,不会影响执行速度的。 {:7_146:}
页:
[1]