我有一个简单的问题,但不幸的是我无法在线找到answear。
const char* foo() const { return "foo"; }
这100%安全吗?
答案 0 :(得分:6)
从PoV语言完全可以接受。
因为没有分配,所以没有任何类型的内存泄漏。构造的唯一值是原始类型的结果指针,该指针被初始化为指向文字的位置。此函数返回的指针指向可以读取和使用的有效位置。
实际上,该函数可以标记为constexpr
,因为可以在编译时确定结果,并且使用该函数的任何程序都将像直接使用文字一样工作。
答案 1 :(得分:0)
我不确定“ 100%”是什么意思。该表达式是正确的,但请记住,调用者将需要知道返回的指针指向的数组的长度。函数要么使用某些参数返回该值,要么调用者检查其长度,但是在这种情况下,函数必须保证数组以NULL终止。