【发布时间】:2014-11-13 01:06:47
【问题描述】:
如果我在结构中有一个字符串成员,然后将其存储到数组中,那么内存是如何分配的?
struct garage {
int ncars;
int nspaces;
int nmechanics;
string name;
}
但是对于最后一个成员 name,string 基本上是 basic_string 的 typedef,所以它的内存在定义时就被分配了,对吧?例如:garage.name = "酷车"; 但是,如果我还没有定义该成员,并将结构存储在一个数组中:
garage nearby_garages[15];
garage g0, g1, g2;
nearby_garages[0] = g0; nearby_garages[1] = g1; nearby_garages[2] = g2;
garage current;
current = nearby_garage[1];
current.name = "Jack's Garage";
字符串大小可以根据字符串/数据的长度而变化。结构大小可以根据字符串大小而变化,这意味着数组大小可以根据结构大小而变化,但是如果预先分配了数组,它就会分崩离析。我可以看到这个工作的唯一方法是如果字符串是指向未夹在结构中的内存位置的指针。但我不认为这就是这里发生的事情。请帮忙?
【问题讨论】:
标签: c++ string memory struct allocation