什么是C语言中C ++分配的等价物

时间:2016-03-03 18:13:45

标签: c

我在C ++中有以下类型的源代码。现在我想用C语言创建这个程序(使用C ++编译器),但我对分配感到困惑。

我目前的功能代码

shred

我尝试使用此char* product(char* a, unsigned short b, unsigned short zeroes) { char* finish = new char[strlen(a) + 2 + zeroes](); short carry = 0; unsigned short c; unsigned short s; for (short i = strlen(a) - 1; i >= 0; i--) { c = char2int(a[i]); s = (b*c + carry); carry = s / 10; finish[strlen(finish)] = int2char(s % 10); } printf("%s", finish); // dump! Looking what is inside if (carry > 0) { finish[strlen(finish)] = int2char(carry); } reverseChar(finish); for (short i = 0; i < zeroes; i++) { finish[strlen(finish)] = '0'; } return ltrim(finish,'0'); // trim } 通过malloc.h分配,但它给了我随机字符(在转储部分)。有人可以说我刚刚发生了什么吗?

1 个答案:

答案 0 :(得分:3)

operator new分配内存,但也调用要创建的对象的构造函数。

在这种情况下char()将它们初始化为零。

要获得等价代码,您可以使用memset

请注意,如果您的类型不是第一个(如char),则还必须将您给malloc的数量乘以类型的大小。 new会自动执行此操作。

当内存中有垃圾时,如果你调用strlen(finish),代码会遇到实际问题。