在声明数组时将 C++ 代码转换为 C#
convert c++ code to c# in declaring an array
最近我想将一些代码从OpenCV转换为C#。但是我在 c++ 中声明动态数组时遇到了一些问题。
int* memorySteps = 0;
CV_CALL( memorySteps = new int [ 10*sizeof(memorySteps[0]) ]);
我想将其转换为普通的 c# int 数组。问题是长度。在 c++ 中,上面的声明似乎编译器将创建一个包含 40 个 int 元素的数组(因为 memorySteps[0] 类型的大小为 4,4 字节长度。我的理解正确吗?但是,这没有意义,因为实际上在算法中我只需要一个包含 10 个 int 元素的数组。所以任何人都可以给我一个提示,这是在下面(在 c# 中(,或者任何人都可以给我看其他例子:
int[] memorySteps =new int [10*sizeof(int)];
或
int[] memorySteps =new int [10];
你的理解是正确的;C++版本将创建一个 40 个整数的数组,假设 sizeof(int)==4
。可能是作者与C的malloc
混淆了,C的大小以字节为单位。
因此,您的第一个版本将提供相同的行为,第二个版本更有可能提供预期的行为 - 但存在超大缓冲区隐藏其他错误的危险,如果您减小大小,这些错误可能会突然暴露。
如果算法需要十个项目,则使用
int[] memorySteps =new int [10];
我怀疑C++代码本身是从 C 代码移植而来的,程序员在其中调用 malloc
,如下所示:
memorySteps = malloc(10*sizeof(memorySteps[0]));
将该代码转换为C++的人可能忘记了拿走乘数。这导致了功能正确但内存效率低下的代码(尽管现在浪费 30 个字节甚至几乎不算是低效(。
你需要的是:
int[] steps = new int [10];
相关文章:
- 用于将C++代码转换为 Web 程序集的脚本未终止
- 如何将 c++ get 函数代码转换为 opencv 算法中使用的 python
- 将 OpenCV 2 中的ANN_MLP代码转换为 OpenCV 3 代码
- 将 c++ 代码转换为 python,使用运算符?
- 使用 jni 将返回带有模板的对象的 Java 代码转换为 c++
- 如何在 Poco 中将工作 HTTP 代码转换为 HTTPS
- 将C++代码转换为 R 代码以生成数据
- 如何将C++ lambda 函数代码转换为 C#?
- 将 python、numpy 和 scipy 代码转换为兼容C++代码?
- 将本机C 代码转换为Java
- 将C++非托管代码转换为 C#
- 将Qt的QML代码转换为C++
- 将此C 代码转换为MIPS
- 如何将此代码转换为两个以上的数字(计算HCF)
- 想要将此 Matlab 代码转换为 OpenCV 代码
- 尝试将 C++11 代码转换为 C++03 时默认函数模板参数出错
- 将阻止同步代码转换为异步
- 将视觉C 代码转换为Borland C 构建器
- 如何将VDT的Pade Exp fast_ex()的双重版本的标量代码转换为SSE2?
- 将 ML 代码转换为 C++