offsetof についての質問なのですが、

struct foo {
int member;
} foo;

とあるのをファイルに出力するときに、

foo f;
ptr = &f;
len = offsetof(f, member) + sizeof(int);

とやっているのがあるのですが、
これは、やっぱり構造体の padding を意識しているのでしょうか?(C FAQより)
とすると、メンバーを

struct foo {
int member;
long member2;
} foo;

と追加したときには、

ptr = &f;
len = offsetof(f, member) + sizeof(int) + sizeof(long);

とするのが正しいのでしょうか? それとも、

ptr = &f;
len = sizeof(struct foo);

とするのが正しいのでしょうか?