c++ - 我需要一种方法来返回函数而不必返回“返回类型”
问题描述
我有一个分配内存然后返回指向该内存地址的指针的函数。我正在分配一个 char 数组,它们传递给函数的参数将是数组大小。现在的问题是,如果它们0
作为要动态分配的大小的参数传递,那么我想退出/返回该函数,但函数本身返回 achar *
所以我无法执行类似的操作return -1;
,我将如何去围绕这个,同时保持功能和逻辑来分配内存?有办法吗?
char *alloate_memory(int x) { // This will assume you are allocating memory for a C-style string
if (x == 0)
return ;
char *mem{ new char[x] };
return mem;
}
解决方案
指示指针未指向有效内存的正确方法是使用nullptr
. 因此return
,在内存分配失败的情况下,您的声明将只是:
return nullptr;
当然,函数的调用者需要确保返回的指针不是nullptr
在他们尝试取消引用它之前。
推荐阅读
- node.js - selenium-webdriver [bazel-genfiles] 的电子 webpack 问题
- reactjs - React Routing 和 react-router-dom 中的问题
- javascript - 当加载某个 AJAX 元素 CONTAINING SPECIFIC TEXT 时,如何使用 waitForKeyElements 触发函数?
- flutter - 如何在 Flutter 中创建一个随着页面滚动而移动的浮动小部件
- anylogic - 使用 Anylogic 在 excel 中保存信息时出现 XmlValueDisconnectedException
- python - 如何通过 __reduce__ 实现代码执行进行酸洗?
- reactjs - 如何在 AWS 中启用 API Gateway 和 React 应用程序之间的 CORS 策略?
- c - 什么是 Solaris 11 中用于编译 c 程序的 CC 编译器。make 文件指定类似“CC=cc -Xa -mt -xc99=no_lib”
- javascript - 如何从 json 数组中删除名称字段?
- visual-studio - 调试服务时,如何配置 Visual Studio 以使用 --remote-debugging-port=9222 启动 Chrome?