0

我正在使用 Xcode 在 C++ 中制作一个程序,该程序将生成随机字符串,但是当我这样做时,它会消耗大量的 RAM。我试过使用 .erase(); 和 .clear(); 但似乎都不起作用。

这是我的代码:

void randStringMake(char *s, int l)
{
    // AlphaNumaric characters
    static const char AlphaNumaric[] = "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "1234567890";

    for(int x = 0; x < l; x++) {
        s[x]=AlphaNumaric[rand() % (sizeof(AlphaNumaric) - 1)];
    }
    s[l] = 0;
}

char randString;

randStringMake(randString, 10);

std::cout << std::string(&randString) << "\n";

所以我想我的问题是,如何从内存中删除字符串?

4

1 回答 1

0

我对您的代码做了一些最小的更改,因此它可以编译和运行。当它应该是一个足够大以容纳生成的字符串和空终止符的数组时,主要问题被randString声明为单个问题。char

请注意,发布的代码不是必需的std::string,也不应该导致过多的内存使用。如果你仍然有问题,那是你没有显示的代码。

#include <iostream>
#include <cstdlib>

void randStringMake(char *s, int l)
{
    // AlphaNumaric characters
    static const char AlphaNumaric[] = "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "1234567890";

    for(int x = 0; x < l; x++) {
        s[x]=AlphaNumaric[rand() % (sizeof(AlphaNumaric) - 1)];
    }
    s[l] = 0;
}

int main()
{
    // randString should be an array to hold 10 chars + null terminator
    char randString[11];

    randStringMake(randString, 10);

    std::cout << randString << "\n";
}
于 2012-08-12T00:57:17.960 回答