我有以下类(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/