首页 > 解决方案 > 从类 String 的函数返回一个指针

问题描述

我正在编写一个 String 类,它是 std :: string 类的简化对应物。有一个 Data() 方法——它返回一个指向数组(字符串)开头的指针。在这段代码中,我得到了 error free (): double free detected in tcache 2。我怀疑我错误地从函数返回了一个指针。你能告诉我怎么做吗?

#include <iostream>

class String {
 public:
  const char* Data() const;
  char* str;
  size_t size;
  size_t capacity;
};

const char* String::Data() const {
   return str;
 }

int main(int argc, char const *argv[]) {
  String s(100, 'a');
  String s1(s);
  int ans = (s.Data() == s1.Data());
}

标签: arraysstringpointers

解决方案


推荐阅读