簡體   English   中英

= txtSelect-> GetValue(); C ++,分段錯誤。 這很奇怪

[英]= txtSelect->GetValue(); C++, Segmentation fault. This is strange

在Linux上Code :: Blocks中的一個簡單C ++測試應用程序中,我有一個名為txtSelect的wxTextCtrl,它包含:'SELECT * FROM user;'

當我運行以下命令時,崩潰!

void refreshGrid()
{
wxTextCtrl *txtSelect;
 wxString sqlLine = txtSelect->GetValue();
}

gdb結果如下:

(gdb) run
Starting program: /home/dan/Documents/wxW_Projs/wxSQLi_417/bin/Debug/wxSQLi_417 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x0000000000410662 in refreshGrid ()
    at /home/dan/Documents/wxW_Projs/wxSQLi_417/wxSQLi_417Main.cpp:199
199  wxString sqlLine = txtSelect->GetValue();

(gdb) bt
#0  0x0000000000410662 in refreshGrid ()
    at /home/dan/Documents/wxW_Projs/wxSQLi_417/wxSQLi_417Main.cpp:199
#1  0x0000000000410593 in wxSQLi_417Frame::OnButton2Click (this=0x7143c0, 
    event=...)
    at /home/dan/Documents/wxW_Projs/wxSQLi_417/wxSQLi_417Main.cpp:183
#2  0x00007ffff6d461fe in wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const ()
   from /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0
#3  0x00007ffff6ecc6e7 in wxEvtHandler::ProcessEventIfMatchedan(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) ()
   from /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0
#4  0x00007ffff6eccace in wxEvtHandler::SearchDynamicEventTable(wxEvent&) ()
   from /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0
#5  0x00007ffff6eccb5f in wxEvtHandler::TryHereOnly(wxEvent&) ()
   from /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0
#6  0x00007ffff6eccc13 in wxEvtHandler::ProcessEventLocally(wxEvent&) ()
   from /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0
#7  0x00007ffff6eccc75 in wxEvtHandler::ProcessEvent(wxEvent&) ()
   from /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0
#8  0x00007ffff75f3de8 in wxWindowBase::TryAfter(wxEvent&) ()
   from /usr/lib/x86_64-linux-gnu/libwx_gtk2u_core-3.0.so.0
#9  0x00007ffff6ecc9e7 in wxEvtHandler::SafelyProcessEvent(wxEvent&) ()
   from /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0
---Type <return> to continue, or q <return> to quit---

我在同一台PC上有另一個應用程序,帶有一個簡單的密碼演示程序,該示例程序使用相同的簡單代碼並且可以完美運行,還有許多其他功能。

任何建議,不勝感激。

txtSelect指向無處。 您應該創建一個指針指向的對象,然后使用它,如下所示:

wxTextCtrl *txtSelect = new wxTextCtrl();
wxString sqlLine = txtSelect->GetValue();

如果分配失敗,則new拋出異常std::bad_alloc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM