malloc

    -5熱度

    3回答

    我有一個動態的二維數組,大小是高度*寬度。 我想通過使用realloc更改數組大小。 這是我的代碼,但它不工作。 我該怎麼辦?幫我!! int main(){ char **img; img = (char**)malloc(sizeof(char*)*height); for(i=0;i<height;i++){ img[i] = (char*)

    1熱度

    1回答

    我有一個使用malloc指針的模擬二維數組,我想獲取該數組的大小,因爲sizeof()返回指針的大小。 我的代碼(ANSI C): void main(){ int s1=10; int s2=15; int ** rack=(int**)malloc(s1*sizeof(int**)); for(int i=0; i<s1; i++) rack[i]=(i

    0熱度

    3回答

    我期待使用madvise和malloc但我總是相同的錯誤: madvise error: Invalid argument 我試圖用MADV_DONTDUMP節省一些空間,我的二進制文件但它不起作用。 頁面大小是4096 int main(int argc, char *argv[]) { void *p_optimize_object; unsigned int optim

    1熱度

    1回答

    我使用下面的代碼列出目錄中的文件,然後將它們放入一個名爲filename_list的長字符串中。該邏輯是 使用的strdup(「」)的環路 之前分配一個零字符,空終止字符*使用的realloc()來做到這一點,其保留增加其大小在每個迭代現有的內容。我通過將舊的長度添加到文件名的長度來計算新緩衝區的時間。 我使用strcat()將文件名附加到緩衝區。 它工作正常,直到它試圖調用realloc()爲導

    -1熱度

    3回答

    我試圖理解的代碼片段在 free a double pointer 和 Why use double pointer? or Why use pointers to pointers? 我想了解以下之間的差別來分配內存。這兩個片段是從上面的網址 int** pt; pt = (int*) malloc(sizeof(int)*10); 和 *pt = (int*) malloc(sizeo

    3熱度

    2回答

    我試圖釋放分配陣列的存儲內struct _Stack,但該計劃一直 typedef struct _Stack { int top; unsigned int capacity; int* arr; }_Stack; _Stack* createStack(int capacity) { _Stack* stack = (_Stack*) mall

    3熱度

    5回答

    從http://en.cppreference.com/w/c/memory/malloc: 返回的指針必須用免費被解除分配()或realloc()。 從http://en.cppreference.com/w/c/memory/calloc: 返回的指針必須用免費被解除分配()或realloc()。 嚴格地說,爲什麼必須返回指針被釋放? 現在我知道POSIX強制內存將在程序終止時被釋放,所以在實

    2熱度

    2回答

    我讀過重複調用malloc/free可能會很昂貴,因此C++標準庫容器使用內存池而不是在它們的析構函數中調用free。另外,我讀過,這意味着C++標準庫容器的性能可能比手動分配和釋放所有必需的C風格數組要高。 不過,我很困惑這個,因爲現在我在C FAQ正在閱讀:(http://c-faq.com/malloc/freetoOS.html) 大部分的malloc實現/免費不釋放的內存返回操作系統,但

    -1熱度

    1回答

    我試圖將結構複製到結構數組中。 我有一個具有頂點的動態分配的數組稱爲 vlist 和一個整數存儲在所述VLIST頂點的數量的字段的圖結構。 頂點有一個名稱數組作爲它們的內部字段。 函數我得到一個錯誤,需要一個圖形和一個字符串,並將一個頂點添加到該圖形中,該字符串作爲頂點的名稱。 下面是函數: int add_vertex(Graph *graph, const char name[]){

    0熱度

    1回答

    很抱歉,如果這個問題是基本的,但我真的不明白爲什麼,如果我不添加「+ 1」節目不打印所有的字母 a = realloc(a,sizeof(char)*(i + 1)); 以及在這裏 *(A + I)= letra; 「a」的位置在每次通過時是否變大? 我認爲情況並非如此,但我不太確定。 #include <stdio.h> #include <stdlib.h> char *copiarFr