c++;代码(malloc方法)到c#代码 我有这个C++代码,并将它转换成C(4)框架代码。 有人给我一些关于malloc、free和sprintf方法的提示吗 int monate = ee; double *forward; double *backward; size_t bytes = 6*sizeof(double); forward = (double *)malloc(monate * bytes); backward = (double *)malloc(monate * bytes); for (int i = 0; i <= monate; i++) { forward[i] = 0.; backward[i] = rate; } forward[0] = auszahlungsbetrag; backward[0] = 0.; backward[monate] = rate + rest; double ez = esolver(12 , monate, forward, backward); printf("Effektivzins: %.2f\n", ez); char tmp0[256]; sprintf (tmp0, "Rate: %.2f (%f)" , rate, rate); writeToLogFile(tmp0); char tmp[256]; sprintf (tmp, "Effektivzins: %.2f (%f)" , ez, ez); writeToLogFile(tmp); free(forward); free(backward); int monate=ee; 双向*向前; 双*向后; 大小字节=6*sizeof(双字节); 向前=(双*)malloc(单字节*); 向后=(双*)malloc(单字节*); 对于(int i=0;i
你不需要c++;代码(malloc方法)到c#代码 我有这个C++代码,并将它转换成C(4)框架代码。 有人给我一些关于malloc、free和sprintf方法的提示吗 int monate = ee; double *forward; double *backward; size_t bytes = 6*sizeof(double); forward = (double *)malloc(monate * bytes); backward = (double *)malloc(monate * bytes); for (int i = 0; i <= monate; i++) { forward[i] = 0.; backward[i] = rate; } forward[0] = auszahlungsbetrag; backward[0] = 0.; backward[monate] = rate + rest; double ez = esolver(12 , monate, forward, backward); printf("Effektivzins: %.2f\n", ez); char tmp0[256]; sprintf (tmp0, "Rate: %.2f (%f)" , rate, rate); writeToLogFile(tmp0); char tmp[256]; sprintf (tmp, "Effektivzins: %.2f (%f)" , ez, ez); writeToLogFile(tmp); free(forward); free(backward); int monate=ee; 双向*向前; 双*向后; 大小字节=6*sizeof(双字节); 向前=(双*)malloc(单字节*); 向后=(双*)malloc(单字节*); 对于(int i=0;i,c#,c++,malloc,converter,printf,C#,C++,Malloc,Converter,Printf,你不需要free().C#是垃圾收集的 你不需要free().C#是垃圾收集的。在C#中,你不需要关心内存-垃圾收集器处理得很好。你的代码必须是这样的: int monate = ee; double[] forward = new double[monate * 6]; double[] backward = new double[monate * 6]; for (int i = 0; i <= monate; i++) { forward[i] = 0.; ba
free()
.C#是垃圾收集的
你不需要free()
.C#是垃圾收集的。在C#中,你不需要关心内存-垃圾收集器处理得很好。你的代码必须是这样的:
int monate = ee;
double[] forward = new double[monate * 6];
double[] backward = new double[monate * 6];
for (int i = 0; i <= monate; i++) {
forward[i] = 0.;
backward[i] = rate;
}
forward[0] = auszahlungsbetrag;
backward[0] = 0;
backward[monate] = rate + rest;
double ez = esolver(12 , monate, forward, backward);
Console.WriteLine("Effektivzins: {0}\n", ez);
int monate=ee;
double[]forward=新的double[monate*6];
double[]向后=新的double[monate*6];
对于(inti=0;i在C#中,您不需要关心内存-垃圾收集器处理得很好。您的代码必须是这样的:
int monate = ee;
double[] forward = new double[monate * 6];
double[] backward = new double[monate * 6];
for (int i = 0; i <= monate; i++) {
forward[i] = 0.;
backward[i] = rate;
}
forward[0] = auszahlungsbetrag;
backward[0] = 0;
backward[monate] = rate + rest;
double ez = esolver(12 , monate, forward, backward);
Console.WriteLine("Effektivzins: {0}\n", ez);
int monate=ee;
double[]forward=新的double[monate*6];
double[]向后=新的double[monate*6];
对于(int i=0;i而言,malloc和free的等价物为:
IntPtr memory = Marshal.AllocHGlobal(100); //malloc
Marshal.FreeHGlobal(memory); //free
malloc和free的等价物为:
IntPtr memory = Marshal.AllocHGlobal(100); //malloc
Marshal.FreeHGlobal(memory); //free
你可以忘记Malloc
和Free
,因为C#有一个垃圾收集器
另外,由于您的应用程序似乎要处理金额,我强烈建议您使用decimal
类型,而不是double
(您可以忘记Malloc
和Free
,因为C有一个垃圾收集器。至于sprint
也,因为看起来你的应用程序似乎要处理金钱的数量,我强烈建议使用<代码>十进制< /代码>类型,而不是<代码>双。()< C++ >这不是C代码。@ Angew,这里的代码并不是像C++那样有效。为什么,我总是认为“C++”。引用了整个语言,不仅仅是经典C.USER 3109672 OK,不是真正的部分。但是,仍然把惯用的C++代码转换成C语言将遵循一个完全不同的过程,将这个C转换成一个新的文件扩展名。C代码。这不是C++代码,这是C代码。@ Angew,这里的代码不是有效的C++。为什么,我总是认为“C++”指的是整个语言,而不仅仅是经典C.USS3109672 OK,不是真的。但是,仍然把习惯性C++代码转换成C语言,将遵循一个非常不同的过程。“具有新颖文件扩展名的C"C#的代码。虽然是真的,但我认为这在这种情况下没有多大帮助,因为你不需要在C#中进行任何手动内存管理。虽然是真的,但我认为这在这种情况下没有多大帮助,因为你不需要在C#中进行任何手动内存管理。你在对这个可怜的家伙说教,而没有回答他的要求ion.如果他真的想做malloc/free的等价物,然后管理内存的生命周期呢?你在教训这个可怜的家伙,却没有回答他的问题。如果他真的想做malloc/free的等价物,然后管理内存的生命周期呢?