[英]Delete a class with vector<const char *> in C++
I have following code:我有以下代码:
#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;
}
When I run it in Visual Studio and it reach the "delete[]list;"当我在 Visual Studio 中运行它并到达“delete[]list;”时line, it says "Exception thrown: read access violation. this was 0xD8D6A9B0" in the file "xutility" at the line 253, here:行,它说“抛出异常:读取访问冲突。这是 0xD8D6A9B0”在文件“xutility”的第 253 行,这里:
#if _ITERATOR_DEBUG_LEVEL == 2
if (_Myproxy != 0)
What is the problem?问题是什么? and what can I do?我能做什么?
Try this:尝试这个:
#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;
}
The reason the other wasn't working was because list wasn't an array.另一个不起作用的原因是因为 list 不是数组。 You use 'delete []' is when you have arrays of allocated memory.当您拥有分配的内存数组时,您可以使用“删除 []”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.