删除C++中带有 vector<const char *> 的类
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;"行时,它说"引发异常:读取访问冲突。这是在第 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;
}
另一个不起作用的原因是列表不是一个数组。使用"删除 []"是指您有已分配内存的数组。
相关文章:
- 在字符串函数中抛出'char const*'实例后调用的终止
- 双重标准?为什么只有 char* const&a = "bla" 的警告?
- 包括"lvtocon.h",未定义对'operator<<(std::ostream&, char const*)的引用
- 为什么 const char* const & = 可以编译"hello"?
- 将字符串文本常量定义为 char const* 和 wchar const*
- 如何将std::wstring转换为char const[]
- "char const * name() const _WEBSOCKETPP_NOEXCEPT_TOKEN_ {"剂量是什么意思
- 使用提升对字符串进行标记化时,将令牌转换为 char* const* 时失败
- 如何从 std::initializer_list<char const* 构建 std::vector<std::string>>
- 将 std::vector<std::string> 转换为 const char* const*
- 引发"char const*"错误的实例后调用的终止
- 将const char * const参数成员分配给新值
- 从'const char**'到'char* const*'的转换无效
- 从 sub_match<常量字符 *>' 转换为'const char *const &'
- char*const和constchar*之间有什么区别?(重复-需要更多澄清)
- 使用工厂方法时编译器错误:无法转换"const std::p air<char* const
- HEVC 解码器端口 Android 警告:从 'signed char*' 到 'char const* 的转换无效*
- 如何从'char const*'中删除常量
- 'char const *str'作为模板参数
- 为什么不;t strlen(.)应为const char*const str,而不是const char*