如果我在C ++中使用这样的东西,
struct socket_t {
sockaddr_in address;
char buffer[2048];
int FD;
}
socket_t *clients[256];
memset(clients, 0, 256);
然后在其中创建对象,
socket_t **free = (socket_t**) memchr(clients, 0, 256);
*free = new socket_t;
然后在某些元素
上使用删除delete clients[index];
是否可以安全地释放所有成员(特别是缓冲区)?
我不想在我创造的每件物品上浪费2 KiB。
我问这个是因为我注意到 sizeof 会返回使用type[2048]
声明数组时使用的字节数,但是如果使用{{1}声明数组则返回指针的大小}。
答案 0 :(得分:4)
struct中的数组是一个自动对象,其生命周期与struct的实例相关联。所以是的,当你删除结构的一个实例时,数组的内存也会被自动释放。对于所有非指针成员都是如此。