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
.
相关的内存问题
我有一个名为 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
.