我得到這個錯誤,當我試圖malloc一些內存我的int整數。錯誤:從類型'void *'分配類型'值'時的不兼容類型?
typedef struct _values {
random ints;
} values;
我試過了下面的代碼,但是我的編譯器不喜歡它。我該如何解決這個錯誤?
values v;
v = malloc(sizeof(values));
我得到這個錯誤,當我試圖malloc一些內存我的int整數。錯誤:從類型'void *'分配類型'值'時的不兼容類型?
typedef struct _values {
random ints;
} values;
我試過了下面的代碼,但是我的編譯器不喜歡它。我該如何解決這個錯誤?
values v;
v = malloc(sizeof(values));
你忘了values
後添加星號(*)和v
之前將其標記爲指針:values *v;
你現在設置的方式,在V(不帶星號)被定義爲堆棧變量並在堆棧中分配並在函數結束後丟棄。它的類型將只是values
。 malloc
用於在堆上分配內存並返回指向內存的指針。正弦函數沒有辦法知道它的類型,它返回它作爲一個void *
類型 - 這會給你你的錯誤 - 你試圖將一個void *
類型分配到一個struct
類型,編譯器不能這樣做,也不能編譯器找到可以解決問題的合法演員。
在這種情況下,您不需要malloc
內存;行values v;
已經分配了內存(「在堆棧上」)。當您離開當前範圍時它將自動釋放。
如果你真的想分配「在堆上」的內存,所以它保持超過當前範圍,你需要v
作爲一個指針;那就是:
values *v;
v = malloc(sizeof(values));
記得到free
它當你完成。
values v;
這是那是棧上分配結構的一個實例。
v = malloc(sizeof(values));
的malloc會返回一個指針void*
和編譯器不會讓你一個指針賦給一個實例。
您需要聲明一個指針,然後爲其分配malloc返回指針。
東西排序
*值的V = NULL;
v = malloc(sizeof(values));
感謝的人。你拯救了我的生命 – 2017-10-15 17:03:22
@SMITPATIL你是最受歡迎的:) – immortal