C++ 这是自由字符的正确点吗*

C++ 这是自由字符的正确点吗*,c++,memory-management,delete-operator,C++,Memory Management,Delete Operator,我有这个密码 { char *filename = createFilename(file, extension); ... ... delete[] filename; } inline char *DataSet::createFilename(LPCSTR file, LPCSTR extension) { char *path = new char[strlen(file) + strlen(extension) + 1]; strcpy(path, file);

我有这个密码

{
 char *filename = createFilename(file, extension);
 ...
 ...
 delete[] filename;
}

inline char *DataSet::createFilename(LPCSTR file, LPCSTR extension)
{
  char *path = new char[strlen(file) + strlen(extension) + 1];
  strcpy(path, file);
  strcat(path, extension);

  return path;
}
在主函数中删除“filename”是否正确?我在删除时收到错误\u无效\u名称。我已经检查了文件名,这是正确的



我知道我应该使用std::string,但这是现有代码。如果它是现有代码,并且您无法更改
createFilename
以返回
std::string
,请提供帮助,然后将呼叫站点更改为使用
std::unique\u ptr
。它专门用于阵列,比单独执行删除操作安全得多。看

如果它是现有代码,并且您无法更改
createFilename
以返回
std::string
,那么如何更改调用站点以使用
std::unique\u ptr
。它专门用于阵列,比单独执行删除操作安全得多。看

如果它是现有代码,并且您无法更改
createFilename
以返回
std::string
,那么如何更改调用站点以使用
std::unique\u ptr
。它专门用于阵列,比单独执行删除操作安全得多。看

如果它是现有代码,并且您无法更改
createFilename
以返回
std::string
,那么如何更改调用站点以使用
std::unique\u ptr
。它专门用于阵列,比单独执行删除操作安全得多。看

目录名、文件名或卷标不正确时,通常会发生类型为error\u INVALID\u NAME的错误。在Windows上,您可能需要注意。例如,如果文件路径为C:\Folder\file.ext,则应使用字符串C:\\Folder\\file.ext。此外,您使用的API可能不接受某些字符,即使Windows允许在文件名和目录名中使用这些字符。请参阅。

目录名、文件名或卷标不正确时,通常会发生类型为错误\u无效\u名称的错误。在Windows上,您可能需要注意。例如,如果文件路径为C:\Folder\file.ext,则应使用字符串C:\\Folder\\file.ext。此外,您使用的API可能不接受某些字符,即使Windows允许在文件名和目录名中使用这些字符。请参阅。

目录名、文件名或卷标不正确时,通常会发生类型为错误\u无效\u名称的错误。在Windows上,您可能需要注意。例如,如果文件路径为C:\Folder\file.ext,则应使用字符串C:\\Folder\\file.ext。此外,您使用的API可能不接受某些字符,即使Windows允许在文件名和目录名中使用这些字符。请参阅。

目录名、文件名或卷标不正确时,通常会发生类型为错误\u无效\u名称的错误。在Windows上,您可能需要注意。例如,如果文件路径为C:\Folder\file.ext,则应使用字符串C:\\Folder\\file.ext。此外,您使用的API可能不接受某些字符,即使Windows允许在文件名和目录名中使用这些字符。请参阅。

不要这样做。使用
std::string
并重构原始代码以使用更多
std::string
;另外,请使用
char
而不是
char
。您如何检测错误?此代码看起来很好-除非
Char
不是
Char
。此错误看起来像是文件操作失败,而不是来自处理内存。删除运算符不会导致错误\u无效\u名称。此错误可能是由使用文件名的代码发出的。@Rndp13 No不要这样做。使用
new[]
创建的任何内容都需要使用
delete[]
删除。不要这样做。使用
std::string
并重构原始代码以使用更多
std::string
;另外,请使用
char
而不是
char
。您如何检测错误?此代码看起来很好-除非
Char
不是
Char
。此错误看起来像是文件操作失败,而不是来自处理内存。删除运算符不会导致错误\u无效\u名称。此错误可能是由使用文件名的代码发出的。@Rndp13 No不要这样做。使用
new[]
创建的任何内容都需要使用
delete[]
删除。不要这样做。使用
std::string
并重构原始代码以使用更多
std::string
;另外,请使用
char
而不是
char
。您如何检测错误?此代码看起来很好-除非
Char
不是
Char
。此错误看起来像是文件操作失败,而不是来自处理内存。删除运算符不会导致错误\u无效\u名称。此错误可能是由使用文件名的代码发出的。@Rndp13 No不要这样做。使用
new[]
创建的任何内容都需要使用
delete[]
删除。不要这样做。使用
std::string
并重构原始代码以使用更多
std::string
;另外,请使用
char
而不是
char
。您如何检测错误?此代码看起来很好-除非
Char
不是
Char
。此错误看起来像是文件操作失败,而不是来自处理内存。删除运算符不会导致错误\u无效\u名称。此错误可能是由使用文件名的代码发出的。@Rndp13 No不要这样做。使用
new[]
创建的任何内容都需要使用
delete[]
删除。