C++ 开关-为什么使用break会给我一个访问冲突写入位置?

C++ 开关-为什么使用break会给我一个访问冲突写入位置?,c++,switch-statement,access-violation,C++,Switch Statement,Access Violation,好的,这段代码在一个短问题上相当长,所以我将使用ptMinTrackSize.x=375; MMI->ptMinTrackSize.y=100; 返回0; } 案例WM_销毁: PostQuitMessage(0); 返回0; 违约: 返回DefWindowProc(hwnd、message、wparam、lparam); } 返回0; } 我会直接把它缩短到你们的问题: SetWindowText(hUserBox, szDefault); }

好的,这段代码在一个短问题上相当长,所以我将使用ptMinTrackSize.x=375; MMI->ptMinTrackSize.y=100; 返回0; } 案例WM_销毁: PostQuitMessage(0); 返回0; 违约: 返回DefWindowProc(hwnd、message、wparam、lparam); } 返回0; }

我会直接把它缩短到你们的问题:

    SetWindowText(hUserBox, szDefault);
            }
            delete[] szProccessToKill;
            break; <--- **If this is not a return 0;**
        }

        case 3:
        {
            break;
        }

    default:
        break;
    }

    //Set Min / Max Width/Height size.
case WM_GETMINMAXINFO: <-- It will jump down here and give me an access violation error:
{
    MINMAXINFO* MMI = (MINMAXINFO*)lparam; 
    MMI->ptMaxTrackSize.x = 375;
    MMI->ptMaxTrackSize.y = 100;
    MMI->ptMinTrackSize.x = 375;
    MMI->ptMinTrackSize.y = 100;
    return 0;
}
SetWindowText(hUserBox,szDefault);
}
删除[]SZPROCESSTOKILL;
打破ptMaxTrackSize.y=100;
MMI->ptMinTrackSize.x=375;
MMI->ptMinTrackSize.y=100;
返回0;
}

你真的确定它不会在这里崩溃吗:
删除[]szProccessToKill?您有嵌套的switch语句,因此内部switch语句的一个案例中的中断会一直延续到外部switch语句的下一个案例中。如果你不想在外部开关语句中出错,你需要在内部开关的关闭括号后休息一下。是的,我慢慢地检查了它,当第一行点击“MMI->ptMaxTrackSize.x=375”时,我得到了错误信息。@πάντα ῥεῖ您似乎在关注内部开关的
案例1:
,但您需要仔细考虑内部开关的所有案例。您是否因为代码尚未编写或不应执行任何操作而遗漏了其他情况下的代码?内部开关的任何情况是否会导致外部开关失效?@JSF我已经添加了额外的中断(我完全忘记了这一点),所以感谢它现在似乎正在工作。有没有可能是因为它在WM_MINMAXINFO中漏掉并添加了不需要的信息,导致它出错。
    SetWindowText(hUserBox, szDefault);
            }
            delete[] szProccessToKill;
            break; <--- **If this is not a return 0;**
        }

        case 3:
        {
            break;
        }

    default:
        break;
    }

    //Set Min / Max Width/Height size.
case WM_GETMINMAXINFO: <-- It will jump down here and give me an access violation error:
{
    MINMAXINFO* MMI = (MINMAXINFO*)lparam; 
    MMI->ptMaxTrackSize.x = 375;
    MMI->ptMaxTrackSize.y = 100;
    MMI->ptMinTrackSize.x = 375;
    MMI->ptMinTrackSize.y = 100;
    return 0;
}