如何在 C 中释放指向动态数组的指针?

2024-05-09

我用 malloc 在 C 中创建一个动态数组,即:

myCharArray = (char *) malloc(16);

现在,如果我创建一个这样的函数并通过myCharArray to it:

reset(char * myCharArrayp)
{
    free(myCharArrayp);
}

这会起作用,还是我会以某种方式只释放指针的副本myCharArrayp而不是实际的myCharArray?


您需要了解指针只是一个变量,它存储在堆栈中。它指向一个内存区域,在本例中是在堆上分配的。您的代码正确释放堆上的内存。当您从函数返回时,指针变量就像任何其他变量(例如int),被释放。

void myFunction()
{
    char *myPointer;     // <- the function's stack frame is set up with space for...
    int myOtherVariable; // <- ... these two variables

    myPointer = malloc(123); // <- some memory is allocated on the heap and your pointer points to it

    free(myPointer); // <- the memory on the heap is deallocated

} // <- the two local variables myPointer and myOtherVariable are freed as the function returns.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C 中释放指向动态数组的指针? 的相关文章

随机推荐

  • Pandas DataFrame styler - 如何将 pandas dataframe 设置为 Excel 表的样式?

    如何将 pandas 数据框设置为 Excel 表格 替代行颜色 样品样式 样本数据 import pandas as pd import seaborn as sns df sns load dataset tips 如果你的最终目标是拯
  • 如何配置 Travis-CI 来构建拉取请求并合并到无冗余的主控

    用 BDD 术语来说 背景 鉴于我正在为 GH 存储库做出贡献 当我创建拉取请求时然后 Travis 应该构建最新的提交 当我推送现有的拉取请求时然后 Travis 应该构建最新的提交 当我将拉取请求合并到 master 时那么 Travi
  • 使用 LINQ 或 Lambda 从列表中删除实例?

    现在 我进入了一个阶段 将所有数据作为缓存 对象 中的列表获取 接下来要做的就是从列表中删除一些实例 通常 我会像这样删除 List
  • Python:使用 python 运行 Excel 宏

    我需要通过 python 运行 Excel 宏 但总是收到以下错误 result self oleobj InvokeTypes dispid LCID wFlags retType argTypes args pywintypes com
  • 在 TFS 中,如何提取过去特定日期之间分配给我的所有项目?

    我正在尝试找出在特定日期之间提取我盘子上的所有物品的方法 这可能吗 您能帮我弄清楚如何为此编写查询吗 谢谢 我所知道的最好的办法就是设置 Assigned To Was Ever Me 然后手动扫描返回的工作项列表 根据需要设置其他字段以过
  • 我们什么时候应该在方法中抛出异常或捕获异常?

    我一直在阅读有关异常的更多内容 但我不确定在什么情况下我们应该抛出一个方法 public void fxml throws IOException method body here 或捕获方法内的异常 public void fxml FX
  • Java 中的并行编程

    我们如何在Java中进行并行编程 有什么特殊的框架吗 我们怎样才能让这些东西发挥作用 我会告诉你们我需要什么 认为我开发了一个网络爬虫 它从互联网上爬取了大量数据 一个爬行系统无法使事情正常工作 因此我需要更多的系统并行工作 如果是这种情况
  • Oracle group by 中的字符串聚合

    我已经形成了一个大型查询 它使用以下数据条件获取大型数据集 Column1 Column2 M1 OTH M1 HHM M1 RES M2 HHM M2 RES M3 OTH M3 RES 我需要将其形成为 M1 OTH HHM RES M
  • 如何在 Android 中以编程方式配置启动器活动?

    我正在开发一个具有两项活动的应用程序 LoginActivity and MainActivity 当用户首次打开应用程序时 他将登录并且他的凭据 用户名和令牌 保存在Preferences 现在 如果用户再次打开应用程序MainActiv
  • 使用 PHP 将 mysql 值转储到 JSON 文件中

    我正在尝试使用 PHP 从 mysql 数据库生成 JSON 文件 到目前为止 我有
  • 使用 SqlBulkCopy 时提供流作为二进制列的数据源

    如果需要读取数据fromSqlServer 采用流式传输方式 有一些功能可以实现这一点 比如使用SqlDataReader with CommandBehavior SequentialAccess 特别是当需要访问二进制列数据时 有Get
  • 赋值语句值

    大家都知道 在 Python 中赋值不会返回值 大概是为了避免对if通常只是为了进行比较的语句 gt gt gt if a b File
  • 比较在 Eclipse Neon 中不工作

    我 最后 尝试从 Mars 2 升级到 Eclipse Neon 安装 SVN 支持和 SVNKit 1 8 14 连接器后 我可以访问我的存储库 然而Compare不管用 如果我右键单击已修改的文件 然后选择与工作副本中的基础进行比较将显
  • PayPal Rest API for Payments 在沙箱中返回 NULL

    我有一个 PayPal 沙盒帐户 我可以在 PHP 上使用curl 通过 api 检索令牌 但是处理测试卡只会返回 null 有人看到代码有问题吗 这是 PayPal 沙盒的已知问题吗 下面代码片段中的客户端是伪造的 但是 如前所述 使用我
  • Golang 网络爬虫 NTLM 身份验证

    Golang 网络抓取工具需要从经过 NTLM 验证的网页中提取信息 有了有效的用户名和密码 网络抓取工具如何与服务器进行 NTLM 4 次握手 以获得对后面受保护网页的访问权限 url username password http www
  • Android 的 GCM 推送通知[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 最近 我尝试学习 GCM 并制作一个测试应用程序 该应用程序将通过 androids 官方网站获取 an
  • msinfo32 无法在 Windows XP 下的 NSIS 中运行

    以下 NSIS 行由于某种原因拒绝在 Windows XP 下运行 立即返回 ExecWait PROGRAMFILES Common Files Microsoft Shared MSInfo msinfo32 report DESKTO
  • 接下来使用 Java Scanner 读取文本(Pattern 模式)

    我正在尝试使用 Scanner 类使用 next Pattern pattern 方法读取一行 以捕获冒号之前的文本 然后捕获冒号之后的文本 以便 s1 textbeforecolon 和 s2 textaftercolon 该行看起来像这
  • 对 sf:: 的未定义引用

    我想用 C 制作 GUI 应用程序 发现 SFML 是一个不错的选择 幸运的是 我使用的是 Linux 所以 SFML 2 4 已经安装在我的系统上 所以我开始搜索一些教程并找到了一个制作简单窗口的教程 但是当我运行代码时 出现错误 提示未
  • 如何在 C 中释放指向动态数组的指针?

    我用 malloc 在 C 中创建一个动态数组 即 myCharArray char malloc 16 现在 如果我创建一个这样的函数并通过myCharArray to it reset char myCharArrayp free my