このプログラムの誤っている箇所を修正し、説明する。
また、このプログラムを実行させた場合、駄々しく動作しない。
どうような結果になることが予想されるか記述する。
#include<stdlib.h>
typedef struct{
char m_ch;
int m_n;
}MyType;
void main(void)
{
MyType *p=(MyType *)malloc(sizeof(char) + sizeof(int));
if(p){
p->m_ch = 'a';
p->m_n = 100;
free(p);
}
}
ここでの誤りは、
MyType *p=(MyType *)malloc(sizeof(char) + sizeof(int));
↓
MyType *p=(MyType *)malloc(sizeof(MyType));
となるのはわかります。
しかし、説明となるとまとめることができません。
nバイトアライメントやパディングなどをどういう風に使えばいいんでしょうか?