malloc

    1熱度

    2回答

    我讀了很多關於malloc()和free()的標準C.據我所知,你malloc()對於一些內存只有一次,然後你free()相同的內存一次。這可能是不好的做法,但我明白,在你使用malloc()內存後,你可以定義多個指針。而且一旦你指定了這些指針中的任何一個,分配的內存就會被解除分配? 考慮這個玩具例如: #include <stdio.h> #include <stdlib.h> #inclu

    1熱度

    3回答

    下面是我正在編寫的一個程序的簡化提取。我在訪問數組結束時遇到問題。 #include <stdio.h> #include <stdlib.h> #include <stdint.h> int main(int n, char *args[n]){ // create 4D array scores[10000][100][100][100] on heap uin

    2熱度

    1回答

    我有一個小問題(很大)的c程序,並發現問題不是來自我的程序本身,而是我創建我的數組的方式,我認爲。 我的問題是,我需要創建一個與包含環境變量(extern char **environ)相同的數組,然後在最後添加另一個值。 這裏是我做了檢查,如果environ很好複製或不是代碼: #include <stdlib.h> #include <string.h> #include <stdio.h

    0熱度

    2回答

    首先,這個問題並不適用於那些認爲自己是C++警察的人員,因爲它涉及到一些嚴重的C彎曲以擠回一點內存,所以請用你的守護天使帽子閱讀這個問題。 我有一個程序,許多字符串分配在malloc其中大多數是1個字符長。 包含1個字符的字符串約需〜32個字節的實存儲器包括描述符,塊大小等 所以我的巧妙的計劃是使用字符*指針存儲由這個char或字符串: char *sourceStringOrChar; so

    1熱度

    1回答

    我有以下簡單的代碼: 該結構的第一次使用,f工作正常,但我不能爲的malloc n - 我得到一個錯誤,它無效*不能被分配給myValues *。我知道我不應該投射malloc,那我該怎麼做呢?怎麼了? 確切的錯誤: a value of type "void *" cannot be assigned to an entity of time "myValues *" #include <std

    -1熱度

    2回答

    我試圖重構我的代碼,使之更好/更可讀所以我想更改2- d變量數組分配如下 // OLD CODE int **map; map = calloc(number, sizeof(int *)); if (!(map)) { free(map); return 1; } for (int i = 0; i < number;

    1熱度

    4回答

    我有我已經聲明瞭以下結構: typedef struct binTreeNode { void *data; struct binTreeNode *left; struct binTreeNode *right; } myBinaryTreeNode; 在我main功能,我試圖用一個指針叫root該結構的一個實例。 myBinaryTreeNode *roo

    0熱度

    4回答

    我正在處理的這部分任務涉及一個程序,它通過套接字從客戶端執行命令。現在我唯一要編輯的文件是我的mathServer.c我目前卡在一個的幾個部分,從提供的說明: 完成方法 - doServer()。 doServer()應該有一個等待客戶端連接到listenFd的循環。當客戶端存在,它應該: 的malloc()足夠的內存爲2點的整數 放)的文件描述符接受(在這些空間的一個 投入的價值threadCo

    0熱度

    2回答

    我正在使用for循環創建鏈表並在for循環中執行malloc。我得到的問題是在for循環中,malloc總是返回相同的內存地址! 我認爲它應該每次迭代都返回一個不同的地址,以便我可以鏈接節點。當前輸出意味着程序總是覆蓋相同的地址,並且我無法鏈接節點,因爲一直只有一個節點。這是對的嗎? struct list_node { char *id; char *url; st

    -1熱度

    2回答

    我創建了一個像這樣的緩衝區,但我不給它內容。然後我嘗試查看這個塊存儲器的strlen()。 int size = 24; char *c; c = (char *)malloc(size); printf("%d\n", strlen(c)); 我得到的不是24而是40.我嘗試從C [40]查看值到c [47],我總是得到\ 0但是C後[47]是不是空了。 當我設