我有这段代码将随机字符串放入char指针数组:
char * str[100] = {0};
const int elems = sizeof(str)/sizeof(str[0]),size=5;
srand(time(0));
for(int i=0;i<elems;i++){
char rString[size] = {0};
for(int j = 0;j<size;j++){
rString[j] = 97+rand()%26;
}
rString[size] = '\0';
str[i] = new char[size];
strcpy(str[i],rString);
}
for(int i=0;i<elems;i++){
cout<<str[i]<<endl;
}
但是str[0]
被污染或为空。
您的rString[size] = '\0';
超出范围地写入元素!最后一个元素是rString[size-1]
。此后的所有内容均为undefined behaviour