gpt4 book ai didi

c++ - 无法将多个 Cstring 添加到一组 Cstring

转载 作者:行者123 更新时间:2023-11-30 01:45:52 25 4
gpt4 key购买 nike

我有这个函数可以将事件(每个事件都是一个 cstring)添加到事件数组中:

bool vendor::addEvent(const char * event)
{
if (eventsSize == EVENTS_CAP - 1)
return false;
eventsSize++; //keep track of the size of the array
this->events = new char*[EVENTS_CAP]; //outer array
this->events[eventsSize-1] = new char[strlen(event) + 1]; //cstring array
strcpy(this->events[eventsSize-1], event);
return true;
}

EVENTS_CAP 等于 20 并且是我的供应商类的一部分,还有 eventsSize 和事件(您将在下图中看到)。此函数在传入一个事件后工作正常:enter image description here

但是传入另一个事件会使数组不可读:enter image description here

您知道是什么原因造成的吗?

最佳答案

每次调用 addEvent() 函数时,您都在重新分配 events 数组(并泄漏旧数组)。

因为您递增了 eventsSize,所以每次都写入下一个数组成员,而之前的成员未初始化(这解释了为什么在第二次传递时数组看起来包含垃圾)。

您可能只需要进行以下更改:

if (!this->events) this->events = new char*[EVENTS_CAP]; //outer array

关于c++ - 无法将多个 Cstring 添加到一组 Cstring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33904224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com