![]() |
1
1
创建类型为的变量
就这样。没别的了。
分配类型为的对象
就这样。没别的了。 现在到 初始化 这样一个对象是完全不同的问题但是为了初始化一些东西,你需要先创建一些东西最好将这两个过程,创建和初始化,在精神上分开。
所以你有一个无知的
每个字段都是一个矩阵,可能需要自己的复杂初始化,因此编写一个专用的矩阵初始化函数是有益的我们先用一个,以后再写。假设您必须在堆上分配数据集。
在堆上分配的任何内容最终都必须被释放,因此我们编写了一个对称的释放函数:
矩阵初始化。有一个库函数可以做到这一点,但它需要一个指向其数据数组的指针,该数组应该被分配到某个地方。我想它是堆起来的。
破坏矩阵几乎是微不足道的:
同样,这假设您需要在堆上分配矩阵数据事实并非如此。也许你在一个内存有限的嵌入式设备上。现在我们假设相反:没有堆您不需要分配数据集,但仍需要初始化它:
现在init_matrix除了调用
不需要销毁,但您可能仍希望保留不起任何作用的销毁函数,以防万一,并在适当时调用它们。
为什么?因为你不想重做
全部的
一旦你改变主意(或切换到另一个设备)并决定在堆上分配矩阵。你只要修改你的
|
![]() |
2
1
我认为您应该对此采取更细粒度的方法,并从为每个
另一方面,如果您总是知道矩阵的数目和它们包含的元素的最大数量,则可以使用复合文字来生成数据集:
这将使您免于堆分配/释放。 |
![]() |
3
0
注意,指针和数组是不同的动物!
这里,那个
这意味着这条线是完全错误的:
相反,您应该分别分配结构和数组:
因为你已经把一切
|
![]() |
cobb208 · Malloc正在为释放指针引发错误 2 年前 |
![]() |
kernel · 打印结构数组内容时出错 2 年前 |
![]() |
mwitz · 在Rust中无法正确写入结构的函数属性 2 年前 |
![]() |
Ulysses · 无法访问结构字段(Rust) 2 年前 |
![]() |
Tor · 使用Box<None>值初始化struct 2 年前 |
![]() |
Yestin · Golang如何初始化数组结构[duplicate] 2 年前 |