繁体   English   中英

删除带有向量的类<const char *>在 C++ 中

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

我有以下代码:

#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;”时行,它说“抛出异常:读取访问冲突。这是 0xD8D6A9B0”在文件“xutility”的第 253 行,这里:

#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;
}

另一个不起作用的原因是因为 list 不是数组。 当您拥有分配的内存数组时,您可以使用“删除 []”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM