我使用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";
所以我想我的问题是,如何从内存中删除字符串?
答案 0 :(得分: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";
}