如何解决返回指向结构元素的字符指针
我正在为 C++ 库设计 C API。我正在尝试向此 API 的用户提供对已声明结构的内部元素的访问权限。
struct MESH_path {
char name[12];
int nsize;
char settings[20];
int ssize;
};
struct MESH_path * MESH_API
MESH_path_new(uint8_t type,uint8_t belt) {
struct MESH_path * context;
context = new struct MESH_path;
std::string mn = Mesh::name(
static_cast<Mesh::Type>(type),static_cast<Belt::Type>(belt),);
std::string ss = Mesh::settings(static_cast<Belt::Type>(belt));
std::copy(mn.begin(),mn.end(),context->name);
std::copy(ss.begin(),ss.end(),context->settings);
context->nsize = mn.length();
context->ssize = ss.length();
return context;
}
char * MESH_path_name(struct * MESH_path context,int * size) {
*size = context->nsize;
return context->name;
}
当指针离开其声明范围时,即当函数MESH_path_name
返回时,指针会失效吗?
我当前的实现是否有效? 用户可以这样称呼它:
struct MESH_path * context;
context = MESH_path_new(...,...);
int* nsize;
char* name = MESH_path_name(context,&nsize);
在后面的代码中,他可以通过 char* name
访问存储在原始结构中的原始字符串。如果用户试图改变 char* name
指向的内存会发生什么?它也会改变 context
的内部内容吗?我如何以用户无法更改 MESH_path_name
的内部元素的方式实现 context
?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。