-1
我有一個關於C++和析構函數的新手問題。如果我已經聲明瞭一個destoructor,我刪除了一個類指針後,我的C++程序出現了分段錯誤,否則我不知道爲什麼。非常感謝幫助。C++析構函數分段錯誤
主文件,其中使用了該類。
#include <iostream>
#include "foo.h"
int main(int iargc, char *iargv[]){
std::cout<<"helloworld"<<std::endl;
foo *test;
test = new foo[2];
delete test;
}
頭文件:
#ifndef FOO_H
class foo{
public:
foo();
~foo();
};
#define FOO_H
#endif
Foo.cpp中
#include "foo.h"
foo::foo(){
};
foo::~foo(){
};
沒有delete語句,沒有任何問題,如果我在頭文件和源代碼中刪除析構函數,我可以刪除類指針測試,但我不能刪除它,而我沒有segfault聲明這樣的析構函數。
該代碼是錯誤的,因爲它使用'delete'而不是'delete []',但是不應該在您發佈的最小代碼中導致seg錯誤。所以我認爲你遺漏了你測試過的東西。 – JSF