dynamic-memory-allocation

    1熱度

    1回答

    我想使用realloc函數來存儲動態數組中的輸入字符。一切都很順利,當我使用它時,沒有調用免費方法釋放內存使用後。但是,當我使用它免費的方法運行時錯誤來了。這是我的代碼片段。 int main(){ char *message ; int len = 0 ; char c ; while((c=getchar()) != '\n'){ message = realloc(mess

    -3熱度

    4回答

    我正在調試進程核心轉儲,我想做一個設計更改。 C++進程使用eSQL/C連接到informix數據庫。 目前,應用程序使用從數據庫中提取超過2lacs行的查詢。對於每一行,它使用new創建動態內存並處理結果。它有時會導致Out of memory錯誤,可能是因爲內存泄漏。 我正在考慮一個選項,我一次只能從數據庫中查詢500行,分配動態內存並對其進行處理。一旦它被取消分配,然後加載下一個500等等。

    1熱度

    1回答

    我正在編寫一個Linux驅動程序,它分配一些內存和用戶空間應用程序mmap()的內存。 現在我正在爲該模塊編寫退出處理程序,並且我正試圖弄清楚什麼是一些安全的假設。 首先,當內核模塊退出處理程序被調用時,可以安全地假設所有內存都未被映射(無論是由應用程序還是由內核)?或者在釋放內存之前必須在內核驅動程序中手動取消映射? 我問這個問題,因爲內核應該知道模塊是否正在退出,內核也會處理解映射過程。如果內

    0熱度

    3回答

    該功能可能會將內存塊移到新位置,在這種情況下會返回新位置。 比如我有一個指針數組: int *arr; // somewhere next it initialized, filled with elements and etc 帶我需要: void* location = realloc(arr, NEW_SIZE); 將與舊的內存塊的地方發生什麼事? 如果realloc的返回指針不是數

    5熱度

    3回答

    有人可能比我更聰明地向我解釋爲什麼下面的代碼段出錯?通過引用分配內存沒有問題,但只要我嘗試通過引用分配任何內容或釋放內存,就會發生段錯誤。 我敢肯定,我錯過了一些關於指針和通過引用傳遞的基本概念,希望能夠拋棄一些光。 #include <stdlib.h> #include <stdio.h> void allocateMatrix(float ***); void fillMatrix(

    0熱度

    2回答

    我有一個指針結構的數組,像這樣: class Terrian { ... private: Vector *terrian_vertices; ... } 而對於指針的數據中的「construct_vertices」被生成函數 Terrian::Terrian(int width, int height) { this->width = w

    1熱度

    4回答

    請告訴我爲什麼下面的代碼甚至可以運行在一個strict C-99 compiler: #include <stdio.h> int main() { int n; scanf("%d",&n); int a[n]; a[1]=10; a[2]=5; printf("%d %d",a[1],a[2]); } 變量聲明用C任何其他陳

    2熱度

    2回答

    在C++中,函數如何處理在退出函數範圍時動態分配的內存?該內存是否被清除,還是可以傳回主塊? 在上下文中:我有一個函數,我將它傳遞給一個double來作爲數組。我在函數內動態分配這個內存,初始化元素並退出函數。 void my_func(double* ptr){ ptr = new double[2]; ptr[0] = 15; ptr[1] = 10;

    1熱度

    2回答

    我是C++的新手,正在嘗試使用動態內存來創建一些基本對象。 我傳遞一個int參數給一個方法,它正在改變全局變量的值。我認爲這與我爲新對象分配內存的方式有關,我無法用其他方式編譯它。 int main() { int inp; CRectangle rectb (2,2); cout << "enter number of items to add" << endl;

    0熱度

    1回答

    我在寫一個使用字符數組/字符串的程序。每當我運行該程序,Valgrind的拋出一個「肯定失去了」塊警告: ==8011== [X] bytes in [Y] blocks are definitely lost in loss record 1 of [Z] ==8011== at 0x4A065BA: operator new[](unsigned long) (vg_replace_mall