我有這樣的結構:您可以將較小尺寸的結構放入更大的內存中嗎?
typedef struct
{
int data[10];
} small_structure;
和驗證碼:
small_structure *s_struct;
void * chunk;
chunk = malloc(1000);
s_struct = chunk;
是否確定做這樣的事情?忽略這是浪費記憶的事實。
我有這樣的結構:您可以將較小尺寸的結構放入更大的內存中嗎?
typedef struct
{
int data[10];
} small_structure;
和驗證碼:
small_structure *s_struct;
void * chunk;
chunk = malloc(1000);
s_struct = chunk;
是否確定做這樣的事情?忽略這是浪費記憶的事實。
是的,沒關係。 malloc
將返回適當對齊的內存。然而,只要將任意指定void *
指針指向small_structure *
變量即可,而不是不是。這意味着你的具體例子很好,但類似:
int function(void *p)
{
small_structure *s = p;
return s->data[0];
}
不是!如果p
不適合指針small_structure *
,您剛剛導致未定義的行爲。
是的,只要有足夠的內存可用,分配更多內存總是合法的。
AFAICT,它沒有什麼不對(除了浪費;-)。
請注意,在使用它之前,您必須使用有用的數據填充結構。
你想要做[struct hack](http://c-faq.com/struct/structhack.html)嗎? – hugomg