指针的第一个元素被污染C ++

问题描述 投票:2回答:1

我有这段代码将随机字符串放入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]被污染或为空。

c++ arrays pointers
1个回答
1
投票

您的rString[size] = '\0';超出范围地写入元素!最后一个元素是rString[size-1]。此后的所有内容均为undefined behaviour

© www.soinside.com 2019 - 2024. All rights reserved.