首页 文章

从函数中删除动态大小的数组

提问于
浏览
0

在我的代码的这部分(接收时间)中,我有一个动态大小的字符数组 . 这适用于学校项目,需要动态大小的数组 .

char* msgtime::getTime() {

    std::string t;
    t.append(std::to_string(hour));
    t.append(":");
    t.append(std::to_string(minute));

    char *charTime = new char[t.length()];
    strcpy(charTime, t.c_str());

    return charTime;
}

但是,我无法删除charTime,因为我返回了值 . 我试着按照我在这里看到的另一个问题将它返回到主程序中的char *然后在我完成它时删除它 . 这里的代码是函数返回的内容:

void receive(packet &data, SOCKET con) {
    msgtime tim;

    cout << "Receiving data" << endl;
    int in = recv(con, (char*)&data, sizeof(data), 0);
    cout << "Data received: " << in << endl;

    tim.updateTime();
    char *newTime = tim.getTime();
    strcpy(data.time, newTime);
    delete[] newTime;

}

除了我运行它时,我收到此错误:

HEAP CORRUPTION DETECTED:在正常块(#183)之后0x00129330 CRT检测到应用程序在堆缓冲区结束后写入内存 .

我需要删除getTime函数中的charTime来插入内存泄漏,但我无法弄清楚如何做到这一点 . 任何帮助是极大的赞赏!

1 回答

  • 1

    您没有分配足够的空间,需要多一个char来存储null终止符:

    char *charTime = new char[t.length() + 1];
    

相关问题