【发布时间】:2013-01-14 10:49:32
【问题描述】:
这是我的代码,我不明白为什么会出现运行时检查失败 #2 - 变量“tempSign”周围的堆栈已损坏。我相信错误是由于尝试在 char* tempSign [MAX] 中交换 2 个值而引起的。有人可以解释为什么我会收到此错误并帮助我解决此问题,谢谢。
void constructSet(ZodiacSign *& z,int size)
{
/*ZodiacSign is a char *
This is how z was created from the previous function and
passed by reference
ZodiacSign * z;
z=new char* [num];
for (int i=0;i<num;i++)
{
z[i]=new char [MAXSTR];
} */
ZodiacSign tempSign [MAX]={"aquarius","pisces","aries","taurus","gemini","cancer","leo",
"vergo","libra","scorpio","sagittarius","capricorn"};
for (int i=0; i<size;i++)
{
int x=12;
int num=(rand()%x);
char * ptr=tempSign[num];
strcpy(z[i],ptr);
swap(num,x,tempSign);
x--;
}
}
void swap(int num,int x,ZodiacSign tempSign [MAX])
{
ZodiacSign temp;
temp=tempSign[num];
tempSign[num]=tempSign[x-1];
tempSign[x]=temp;
}
【问题讨论】:
-
请修正缩进,并删除所有多余的空格和注释掉的代码...
-
使用
std::string会容易得多。 -
不能使用字符串类
-
另外,我认为它是
virgo,而你正在使用它:) -
@StuartLC - 我认为这是“你”,而你在它! :)
标签: c++ pointers debugging memory heap-memory