c++ - 我是否需要为指向构造函数的 char 指针分配内存?

标签 c++ pointers arduino

我的 Arduino 代码有一个构造函数,如下所示:

class X {
  private:
    char* _name;
  public:
    X(char*);
}

X::X(char* name) {
  _name = name;
}

我的问题是:我是否需要分配一个字符缓冲区而不是仅仅依赖于传递的字符串指针?我没有对字符串进行操作(除了缩短它)。我似乎还没有遇到任何问题,但我想验证一下。

这是特定于 arduino 的,但也欢迎对 C 和 C++ 的响应。

最佳答案

视情况而定。

基本上,按照现在的代码方式,您需要该名称的生命周期大于类实例的生命周期。如果名称始终是字符串文字,即 X("foo"),那么这是可以接受的。否则,调用者将不得不分配字符串,这是一个奇怪且容易出错的契约(Contract)要求。

我建议总是在构造函数中复制字符串,除非很明显它总是应该是字符串文字。

关于c++ - 我是否需要为指向构造函数的 char 指针分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9406601/

相关文章:

c - 如何将结构转换为 D 中的 C 指针?

c++ - 为什么在 C 和 C++ 中动态分配的对象是未命名的?

c - 是否有限定符将 C 指针指示为 'given to you and should be freed by you' ?

java - 通过 COM 端口上的蓝牙进行串行通信

arduino - 我已将伺服和 PIR 与 NodeMCU 连接,但伺服无法正常工作

前面为 0 的 C++ int 会更改整个值

C++ 用另一个 vector 初始化 vector

embedded - Arduino的一些项目构想是什么?

c++ - 在 C/C++ 中搜索大文件中的数据

c++ - 在 C++ 中是否有更简单的表示条件的方法?