结构中的数组是否在删除时释放?

时间:2011-12-03 12:49:03

标签: c++ arrays memory-management struct

如果我在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}声明数组则返回指针的大小}。

1 个答案:

答案 0 :(得分:4)

struct中的数组是一个自动对象,其生命周期与struct的实例相关联。所以是的,当你删除结构的一个实例时,数组的内存也会被自动释放。对于所有非指针成员都是如此。