1. You can try to call a "getoffset" method e.g.
long offset = object_method(attr, gensym("getoffset"));
Not all attributes are defined in terms of an offset, but if it is this should return it.
2. Yes, you can know from checking ac and then branching accordingly to alloc or resize.
Cheers,
Tim