![]() |
1
1
我觉得整个概念很奇怪。如果在堆栈上声明数组,则它将不存在于函数范围之外。如果您使用“新建”来分配它,请确保您有时间“删除”它,否则它是 内存泄漏 ! “new”的正确代码是:
|
![]() |
2
2
有两个问题。首先,您确实对指针/数组感到困惑:
所以你的声明:
定义指向指针数组的4个指针的数组。也许你对以下事实感到困惑(我知道我学C的时候)。如果你 声明 变量:
这是指向整数的指针的声明。但是,如果您有一个变量a,它是一个指针,那么您可以使用*a得到它指向的对象(这里是一个整数):
所以*in声明用于声明指针,而*in语句用于尊重值。 但第二个问题本身与指针无关。它是关于资源管理(内存是一个,而文件是一个,锁是另一个)。堆栈上分配的任何内容在超出作用域时都不再存在。在纯C中,实际上只有一个解决方案:使用malloc在堆上分配,并确保随后释放。所以你应该做如下的事情:
然后,您将使用另一个功能来清理它:
示例:文件*handle和fopen/fclose(除了分配内容,还有一些与操作系统相关的内容来处理该文件)。另一种解决方案是使用alloca,它不是标准的C,但是被许多工具链支持。 在C++中,可以使用智能指针,例如使用引用计数来进行资源管理。我对C++不太熟悉,我相信人们会对这一部分有所兴趣。使用引用计数的想法是,它仍然提供了自动指针的一些优点(您不必自己调用delete,这对于非琐碎的项目极易出错),但不需要纯粹基于范围。一个基于引用计数的智能指针在Boost中共享。 |
![]() |
3
1
我不确定我是否正确地得到了你想要做的,但是如果你想返回一个对int数组的引用,它将在
你不必记住
|
![]() |
4
0
看起来您需要一个4x4数组,在这种情况下,您应该像这样创建它(我头上没有测试过的代码):
或者,您可以创建一个一维数组,并将其视为二维数组:
|
![]() |
AstralHex · 矩阵乘法代码工作不正常 3 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |