C++有没有办法确定字符串是"interned"还是在只读持久位置?
Is there a way in C++ to determine if a string is "interned" or in a read only persistent location?
许多编译器和加载程序将分配字符串简单地称为"字符串",仅读取持久的内存段。有没有办法在运行时确定这一点,以便在需要持久性并通过" const char *"参数时不分配重复项?也可以防止释放它们。
通用答案是否。不是以便携式的方式。
因此,当(不良接口)函数返回静态或动态分配的内存时,实际上没有办法分辨出差异。例如,
char* num_to_string(int number) {
static char buffer[5];
if(number < 10000) {
std::sprintf(buffer, "%d", number);
return buffer;
}
char* bigger_buffer = new char[50];
std::sprintf(bigger_buffer, "%d", number);
return bigger_buffer;
}
当他不愿意清理返回的内存时,上述功能的使用将无法(如果不查看实现)。
相关文章:
- 将值指定给向量(2D)的向量中的某个位置
- 使用Unreal C++获取VR耳机的世界位置/方向
- 写入位置0x0000000C时发生访问冲突
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 无法获取webot::PositionSensor对象中位置传感器的值
- 非常量变量只读位置的赋值
- 是否可以在C++中使变量真正只读
- 如何定义更改car类中car位置的方法
- 使用迭代器时如何访问对象在向量中的位置?
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 求最大元素位置的分治算法
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 非常量调用 const 成员函数失败,只读位置C++
- 只读位置'__result.std::_Rb_tree_const_iterator<_Tp>::operator*<long long int>()'分配错误
- C++有没有办法确定字符串是"interned"还是在只读持久位置?
- 使用set_union合并两组时,只读位置的分配
- 错误:分配只读位置“arr2.IntArray::operator[](1)”arr2[1]=24;
- 使用字符串的 c_str() 并分配给 char const*:分配只读位置