[問題] 如何在struct指標中使用enum?

作者: OPIV (Monitor)   2014-11-20 00:48:27
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux, GCC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
在struct中使用enum已經試過沒問題了
可是如果在struct指標裡用enum,在執行的時候就會core dumped(是記憶體區段錯誤)
程式碼:
#include <stdio.h>
typedef enum
{
MON, TUE, WED, THU, FRI, SAT, SUN
} day;
typedef struct
{
int date;
day dayofweek;
} *mystruct;
int main(int argc, char *argv[])
{
mystruct ms;
ms->date = 17;
printf("%d\n", ms-date); //到這行都OK
ms->dayofweek = MON; //這裡出現問題
printf("%d\n", ms->dayofweek);
return 0;
}
餵入的資料(Input):
預期的正確結果(Expected Output):
17
0
錯誤結果(Wrong Output):
17
core dumped (記憶體區段錯誤)
補充說明(Supplement):
如果我用
typedef struct
{
int date;
day dayofweek;
} mystruct;
mystruct ms;
ms.dayofweek = MON;
printf("%d\n", ms.dayofweek);
是可以正常工作的
只是換成指標就會錯誤......
作者: LPH66 (-6.2598534e+18f)   2014-11-20 01:00:00
mystruct 是指標, 剛生出來它並不指到一個合法位置你必須要 malloc 一塊給它17 沒事是運氣好而已這跟 enum 沒有關係
作者: karose (karose)   2014-11-20 01:02:00
你的mystruct是指標,要先malloc.
作者: Caesar08 (Caesar)   2014-11-20 07:10:00
搞錯重點了,你的mystruct沒有malloc
作者: anakin2 (No.31)   2014-11-20 23:11:00
恭喜你跨過重要的一關
作者: jammy50605 (小刀)   2014-11-21 03:01:00
作者: EdisonX (卡卡獸)   2014-11-22 00:01:00
恭喜你.. 得到 memory leak 一玫 ...
作者: jammy50605 (小刀)   2014-11-24 02:32:00
樓上XDDDDD
作者: dirkc (3781615)   2014-11-24 11:55:00
malloc後可以free;man malloc有寫,在同一行很難不讀到

Links booklink

Contact Us: admin [ a t ] ucptt.com