c++ - 如何释放字符串数组

标签 c++ arrays string free

我在释放字符串数组时遇到问题。 我有一个程序,但我编写了这个简单的代码来查看错误:

char *cardsName[2];
cardsName[0] = new char[3];
cardsName[0] = "a";
cardsName[1] = new char[3];
cardsName[1] = "c";
for(int i=0;i<2;i++)
    delete(cardsName[i]);

这给我错误 munmap_chunk(): invalid pointer: 0x080489b8 ***

这也给我错误:

char *cardsName[2];
cardsName[0] = new char[3];
cardsName[0] = "a";
cardsName[1] = new char[3];
cardsName[1] = "c";
delete []cardsName;

free(): 无效指针:0xbfc38dd8 ***

然后我如何为指向 char 的指针数组做 free,...我的程序确实需要它,我真的搜索了很多,但我找不到这个简单问题的解决方案。

最佳答案

声明

cardsName[0] = "a";

分配一个指向字符串文字 "a" 的指针,它不能被删除。您使用 cardsName[0] = new char[3]; 分配的指针被丢弃,您将遭受内存泄漏。

您可能打算使用 strncpy() 来分配值:

strncpy("a",cardsname[0],3);

第二个问题是,

delete []cardsName; 

也是错误的。您从未使用 new[] 分配此数组,因此语句失败。

关于c++ - 如何释放字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29127385/

相关文章:

c++ - C++0x 中的新 unicode 字符

c++ - 安装opencv后如何安装OpenCV_contrib模块

c++ - (-1)^n 在 C++ 中求幂

c++ - 将数组中的简单数据类型移动到特定位置的最快方法

c++ - 为什么有些场景不需要 "std::"?

python - 按索引列表从 numpy 数组中切片子数组

c - 动态内存(calloc)和指向指针的指针 [C]

string - 查找给定字符串的显性循环子串

python - 在尊重括号的同时用逗号拆分列表中的字符串

ruby - 如何替换字符串中的特定字符以及紧邻的下一个字符