我无法弄清楚为什么这个程序不起作用。我Access Violation
在尝试将数据类型为字符串的变量推送到另一个使用 malloc 在内存中分配的变量时收到消息。
例如,首先我声明变量..
string pName;
address temp;
之后,我调用Allocate
模块..
temp = Allocate(pName, 1, 1, 200);
这是模块..
#include <...>
#include<string>
#define Info(T) (T)->info
#define FirstSon(T) (T)->ps_fs
#define NextBro(T) (T)->ps_nb
#define Parent(T) (T)->ps_pr
using namespace std;
typedef struct infoElmt{
string pName;
float number;
int type;
float price;
}compInfo;
typedef compInfo infotype;
typedef struct tElmtTree *address;
typedef struct tElmtTree {
infotype info;
address ps_fs, ps_nb, ps_pr;
} node;
typedef address DynTree;
address Allocate (string pName, float number, int type, float price) //(string pName, float number, int unit, int type, float price
{
address P;
P = (address) malloc (sizeof(node));
if (P != NULL)
{
Info(P).type = type;
Info(P).number = number;
Info(P).price = price;
FirstSon(P) = NULL;
NextBro(P) = NULL;
Parent(P) = NULL;
printf("OK");
Info(P).pName = pName;
}
return (P);
}
程序运行时出现错误Info(P).pName = pName;
,我知道是因为如果printf("OK");
移到下面Info(P).pName = pName;
,控制台中不会显示“OK”。
malloc和字符串有问题吗?
编辑
- 这
#include<..>
是另一个包含,如 conio.h 等。 - 我忘记
using namespace std;
在代码中输入..