スタックオーバーフローの例外が発生するのですが、こういうものなのでしょうか?

struct SList
{
boost::shared_ptr<SList> next;
};

int main(){
SList a;
SList* p = &a;
for(int i=0;i<100000;i++){
p->next = boost::shared_ptr<SList>(new SList);
p = p->next.get();
}
}