strcpy 写入结构变量的访问冲突

strcpy access violation writing to a struct variable

我有一个名为 record 的结构,其中包含键值对:

struct Record{
    char* key=new char();
    TYPE value=NULL;
    Record(){
        key = "default";
        value = 10;
    }
    Record(const char* key_, TYPE value_){
        strcpy(key, key_);

        value = value_;
    }
    const Record<TYPE>& operator=(const Record<TYPE>& other){
        key = other.key;
        value = other.value;
        return *this;
    }
};

此外,我有一个 class "SimpleTable",其中包含这些记录的数组:

class SimpleTable:public Table<TYPE>{

    struct Record<TYPE> *table;

public:

当我尝试将日期放入这些记录时出现问题。我的 strcpy 给了我 "Access violation writing location"。 (记录数组的所有元素在 class 构造函数中初始化):

template <class TYPE>
bool SimpleTable<TYPE>::update(const char* key, const TYPE& value){
    for (int i = 0; i < 10; i++){
        if (table[i].key == ""){
            strcpy(table[i].key , key); // <-------- crash right here
            table[i].value = value;
        }
    }
        return true;
}
char* key=new char();

只分配一个字符的内存。

strcpy(table[i].key , key);

除非 key 是空字符串,否则将导致未定义的行为。

使用std::string key。如果不允许您使用 std::string,您将不得不重新访问您的代码并修复与 key.

相关的内存问题