从函数中删除动态大小的数组
Deleting dynamically sized array from function
在我的代码的这一部分(接收时间(中,我有一个动态大小的字符数组。这适用于学校项目,需要动态大小的数组。
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;
}
但是,我无法删除字符时间,因为我正在返回值。我尝试按照我在这里看到的另一个问题将其返回到主程序中的 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;
}
除非我运行它时出现此错误:
检测到堆损坏:在0x00129330的正常块 (#183( 之后CRT 检测到应用程序在堆缓冲区结束后写入内存。
我需要删除 getTime 函数中的 charTime 来堵塞内存泄漏,但我不知道该怎么做。任何帮助将不胜感激!
您没有分配足够的空间,还需要一个字符来存储空终止符:
char *charTime = new char[t.length() + 1];
相关文章:
- std::向量与传递值的动态数组
- 将数组动态分配到具有指针参数的函数中
- 我可以以某种方式使我的矢量/数组动态更改装置数量吗?
- 使用 new: "potentially uninitialized pointer"将对象数组动态分配给指针
- 为什么C 没有方便的方式来为多维数组动态分配内存
- 如何制作具有动态大小的数组?动态数组的一般用法(可能还有指针)
- c++中的数组动态内存分配
- 多维数组动态分配的内存图
- 如何在 c++ 中使用 2-D 固定数组为 4-D 数组动态分配内存
- C++ 我在数组/动态内存方面遇到了一些问题
- C++ 中从数组动态强制转换
- C++中高维数组动态内存分配的正确方法.
- 从 C++ 结构中包含的指针数组动态分配和访问内存
- 对象数组动态内存分配
- 为二维数组动态分配内存时出错
- 如何将2d数组动态分配给结构
- 为结构数组c++动态分配内存
- 将数组动态添加到多维数组
- 类中的类数组-动态数组(c++)有问题
- 分配对象数组动态冻结