问题:

  使用malloc函数为结构体变量分配内存空间,

  其中的string类型变量出现了问题,即提示“读取字符串字符时出错”,无法读取内存。


分析:

  c语言中的malloc函数为静态内存分配函数,即只能分配指定内存大小的空间。而string类型就是一个字符指针,没有指定大小(由无数个char组成),如下图所示。换言之,用malloc方法为string型成员变量分配内存时即出错,因此提示“无法读取内存”。

解决:

  使用c++中的动态内存分配方法 new,即可解决问题。

关于malloc和new的具体功能区别及实现方式,读者可自行查阅资料,笔者在此不予赘述。