删除C++中带有 vector<const char *> 的类

Delete a class with vector<const char *> in C++

本文关键字:char const gt 的类 C++ lt vector 删除      更新时间:2023-10-16

我有以下代码:

#include <vector>
#include <string.h>
class TList {
std::vector<const char*> elementos;
int position;
public:
TList(const char** e, int s);
};
TList::TList(const char** e, int s)
{
std::vector<const char*> res (&e[0], &e[s]);
elementos = res;
position = 0;
}
int main()
{
int size = 2;
const char *arr[2] = {"Hola", "AAAA"};
TList *list = new TList(arr, size);
delete[]list;
return 0;
}

当我在Visual Studio中运行它并到达"delete[]list;"行时,它说"引发异常:读取访问冲突。这是在第 253 行的文件"xutility"中0xD8D6A9B0的,在这里:

#if _ITERATOR_DEBUG_LEVEL == 2
if (_Myproxy != 0)

问题出在哪里?我能做什么?

试试这个:

#include <vector>
#include <string.h>
class TList {
private:
std::vector<const char*> elementos;
int position;
public:
TList(const char** e, int s);
~TList() {}
};
TList :: TList(const char** e, int s) {
std::vector <const char*> res (&e[0], &e[s]);
elementos = res;
position = 0;
}
int main() {
int size = 2;
const char * arr[2] = {"Hola", "AAAA"};
TList * list = new(std::nothrow) TList(arr, size);
delete list;
return 0;
}

另一个不起作用的原因是列表不是一个数组。使用"删除 []"是指您有已分配内存的数组。