2010-07-03 44 views
1

崩潰,我宣佈了以下兩個函數指針在我的課:C++函數指針聲明導致程序退出時

void (*ptrFunc)(void *); 
bool (*ptrValid)(char *); 

現在,出於某種原因,第二指針(ptrValid)會導致程序崩潰退出。當我發表聲明時,程序退出正常,但是當我取消註釋時,它會崩潰。

沒有分配給它,它沒有被調用,只是聲明。

我在這裏錯過了什麼嗎?

+4

只有聲明不會導致崩潰 - 我們需要看到更多的上下文。 – 2010-07-03 23:11:32

+0

當我在類中聲明多個函數指針時發現它崩潰。當只有一個宣佈時,它退出罰款。 我可能會說他們錯了嗎? 編輯:好的,這與我的賦值運算符過載和克隆有關。感謝喬治 – Marcin 2010-07-03 23:14:12

+0

然後它可能不涉及函數指針聲明,但對象的大小。用一個虛擬的'void *'變量替換一個函數指針,看看會發生什麼。如果有更多的崩潰,那麼這是一個對象大小問題。如果不是,那麼這可能是關於如何使用函數指針的一些問題,在這種情況下,您需要向我們展示如何使用函數指針。 – 2010-07-04 00:32:11

回答

6

您描述的內容沒有意義,單單聲明會導致程序崩潰。但是,如果將某個變量添加到某個類會導致程序的內存使用量以導致崩潰的方式發生變化(如果在某個其他可能不相關的點上),則訪問無效的內存地址或導致內存超限等等。也許這只是揭露了你一直存在的問題。

嘗試使用內存配置文件,如ValgrindDUMA來找出你的內存正在發生什麼。