gpt4 book ai didi

c++ - 删除通过取消引用新对象初始化的对象

转载 作者:行者123 更新时间:2023-11-28 04:07:44 25 4
gpt4 key购买 nike

我有以下类(class):

现在我一直在考虑以这种方式实现我的构造函数:

基本上取消对新操作返回的对象的引用。现在......这感觉不对,我可能应该使用指针来工作,但我想挑战自己,也许让它工作并学习新的东西。

所以我的问题是删除这个对象......我的 Dense 析构函数不起作用,因为我有这样的东西:

但显然我收到了这个错误:

free(): 无效指针

那么我怎样才能用我实现这个的方式释放分配的内存呢?

谢谢。

最佳答案

没必要搞得这么复杂。您可以直接从初始化列表中调用构造函数。这里完全不需要new。此外,您不需要delete 那些对象。如果 Dense 被销毁,它们的析构函数将被自动调用。

Dense::Dense(): weights(), //Calls constructor Matrix()
bias(), //Calls constructor Matrix()
act(ActivationType::Relu), //Calls constructor Activation(ActivationType::Relu)
input() //Calls constructor Matrix()
{}


此外,您尝试使用指针执行的操作将不起作用。例如 &bias就是成员变量bias的地址,与 new Matrix()返回的指针无关。

关于c++ - 删除通过取消引用新对象初始化的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58411007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com