小编tgh*_*tgh的帖子

如何在C++中初始化动态数组?

如何实现此静态数组初始化的动态等价物:

char c[2] = {};  // Sets all members to '\0';
Run Code Online (Sandbox Code Playgroud)

换句话说,创建一个动态数组,其中所有值都初始化为终止字符:

char* c = new char[length]; // how do i amend this? 
Run Code Online (Sandbox Code Playgroud)

c++ arrays

56
推荐指数
6
解决办法
10万
查看次数

在VS2008中使用char []的问题 - 为什么strcat追加到空数组的末尾?

我传递一个空的char数组,我需要递归填充使用strcat().但是,在VS调试器中,数组不是空的,它充满了一些我不认识的奇怪的垃圾字符.然后strcat()追加到这些垃圾字符的末尾而不是数组的前面.

我也试过了 encoded[0] = '\0'在传递数组之前清除垃圾,但是strcat()不会在递归调用上附加任何内容.

这是提供数组并调用递归函数的代码:

char encoded[512];
text_to_binary("Some text", encoded);
Run Code Online (Sandbox Code Playgroud)

这是递归函数:

void text_to_binary(const char* str, char* encoded)
{   
    char bintemp[9];
    bintemp[0] = '\0';

    while(*str != '\0')
    {
        ascii_to_binary(*str, bintemp);
        strcat(encoded, bintemp);
        str++;
        text_to_binary(str, encoded);
    }
}
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事?

PS.我不能用std::string- 我坚持了char*.

编辑:这是阵列中的垃圾字符:ÌÌ""......

c++ arrays char

1
推荐指数
1
解决办法
685
查看次数

使用大小为1和strcat的char数组发出问题

好吧,我真的对VS2008中的这种行为感到困惑.

这段代码..

char data[512] = "";

char c[1] = "";
c[0] = '1';

strcat(data, c);
Run Code Online (Sandbox Code Playgroud)

..导致data被设置为此字符串值:1ÌÌÌÌhÿ

当然应该只是1

我怎样才能确保data只包含我复制到其中的单个char [](即1)?

为什么要strcat()复制所有垃圾?为什么c甚至包含那些垃圾?

谢谢你的帮助

编辑:谢谢大家.

c++ arrays char

1
推荐指数
1
解决办法
982
查看次数

C++内存泄漏:动态创建的数组在离开函数调用时被删除了吗?

所以我有一个创建动态数组的函数,然后在我离开函数之前删除数组(正如我想的那样),但是我在VS2008中收到了"Heap Corruption Detected"警告.如果我删除释放内存的行一切正常:

void myFunc()
{
    char* c = new char[length];
    memset(c, 0, length);

    //.. do somsething with array

    delete[] c; //this line throws an error??
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的建议

c++ arrays memory-leaks

1
推荐指数
2
解决办法
2076
查看次数

标签 统计

arrays ×4

c++ ×4

char ×2

memory-leaks ×1