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

コンパイルして実行できるように、コードに最小限の変更を加えました。主な問題は、生成された文字列と null ターミネータを保持するのに十分な大きさの配列である必要がある場合にrandString、single として宣言されたことです。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 に答える