字符串函数和变量周围的错误堆栈的副本已损坏

时间:2019-03-09 21:38:55

标签: c

我的代码:

void CopyString(char psSource[], char pcDestination[]) {
unsigned char ucCountCharPosition;
    for(ucCountCharPosition = 0; psSource[ucCountCharPosition]; ucCountCharPosition++) {
        pcDestination[ucCountCharPosition] = psSource[ucCountCharPosition];
        }
    printf("%s", pcDestination);  }

int main() {
    unsigned char psSource[] = "test";
    unsigned char pcDestination[] = "";
    CopyString(psSource, pcDestination);
    return 0;
}

我对抛出异常有疑问:

  

运行时检查失败#2-围绕变量'pcDestination'进行堆栈   已损坏。

我认为这个循环是无限的,但是在psSource[ucCountCharPosition]这个位置,我不能使用像sizeof之类的功能(由于我的作业要求)。

有什么想法要解决吗?

1 个答案:

答案 0 :(得分:0)

unsigned char pcDestination[] = "";

这将在堆栈上定义一个1字节的数组,并将其初始化为全零。

您没有足够的空间分配给您要复制的字符串。

尝试:

    unsigned char pcDestination[5];

您还有另一个问题:您的函数使目标字符串没有被nul终止。