Đây là lớp thứ bậc mà chương trình của tôi sử dụng:Mysterious stack overflow trong constructor
Các constructor của TForm_Upgrade_Database đang tìm kiếm như sau:
__fastcall TForm_Upgrade_Database :: TForm_Upgrade_Database (TComponent * Chủ đầu tư, int newest_version) : TForm (Chủ sở hữu) { }
Sau khi cố gắng tạo ra thể hiện của công thức
TForm_Upgrade_Database *dlg = new TForm_Upgrade_Database(this, newest_version);
chương trình của tôi ném EStackOverflow ngoại lệ
tôi dừng lại chương trình và chạy nó một lần nữa với breakpoint trong TForm_Upgrade_Database constructor. Sau vài bước callstack trông như thế này:
Làm thế nào là nó mà TCustomForm constructor giữ cố gắng để gọi constructor của hậu duệ của nó ???
trường hợp thử nghiệm tối thiểu:
so_project.cpp:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "f_form.h"
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
TForm_Upgrade_Database *form = new TForm_Upgrade_Database(NULL, 10);
delete form;
form = NULL;
return 0;
}
//---------------------------------------------------------------------------
f_form.cpp:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "f_form.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm_Upgrade_Database *Form1;
//---------------------------------------------------------------------------
__fastcall TForm_Upgrade_Database::TForm_Upgrade_Database(TComponent* Owner, int x)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
f_form.h:
//---------------------------------------------------------------------------
#ifndef f_formH
#define f_formH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm_Upgrade_Database : public TForm
{
__published: // IDE-managed Components
private: // User declarations
public: // User declarations
__fastcall TForm_Upgrade_Database(TComponent* Owner, int x);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm_Upgrade_Database *Form1;
//---------------------------------------------------------------------------
#endif
Ảnh chụp màn hình và sơ đồ không thực sự giúp bất kỳ ai trong việc xác định sự cố. Vui lòng xây dựng [** trường hợp thử nghiệm ** tối thiểu] (http://sscce.org) và sau đó đăng mã. –
bạn có đang tạo một đối tượng cập nhật khác trong hàm tạo không? – perreal
Một vấn đề tràn ngăn xếp khác trên StackOverflow :) – nikhil