2011-11-10 37 views
1

我正在使用MPLabX IDE爲使用C32 v1.12的PIC32編譯以下代碼。 代碼編譯發現但掛在malloc(),它似乎並不重要我試圖malloc它總是掛起的大小。PIC32 c32 1.12,Malloc掛起應用程序

掛起我的意思是調試器變得無響應,應用程序必須在它將繼續之前手動重新啓動。

#define SAFE_DELETE(x) { if(x != NULL) { free(x); x=NULL ; } } 

BOOL Test_Malloc() { 

    int *ptr = NULL ; 
    ptr = (int*)malloc(10 * sizeof (int)); // With a cast 
    if(ptr != NULL) { 
     SAFE_DELETE(ptr); 
     return TRUE ; 
    } 
    return FALSE ; 
} 

我的問題是;

  • 如何使用C32 v1.12的PIC32上的malloc內存?
+0

什麼是SAFE_DELETE?你是否100%肯定它是'malloc'掛起而不是之後的代碼?項目的堆大小設置爲?確保它至少比你可能需要的內存大4KB。 –

+0

@DavidSchwartz爲示例源代碼添加了SAFE_DELETE定義。是的,我確信代碼掛在malloc而不是SAFE_DELETE上,如何檢查項目堆大小? –

回答

2

確保設置項目的堆大小至少比4KB你也許需要動態內存的最大量。如果您調用自己稱爲malloc的函數,則必須猜測C庫可能需要什麼。這不是一門精確的科學。

有關更多詳細信息,請參閱此Microchips forum thread

+0

它看起來像默認堆大小爲零。如果您想使用malloc() –

+0

獲得更多關於如何設置堆大小的信息,請參考「用於PIC32MX MCU的MPLAB C編譯器用戶指南」第5.5節「HEAP USAGE」 –