Pointers 我可以给Char*分配一个#define值吗?

Pointers 我可以给Char*分配一个#define值吗?,pointers,memory,memory-leaks,char,structure,Pointers,Memory,Memory Leaks,Char,Structure,我一直在写一个C程序。其中我有一个包含char*成员的结构 #define SS_Value_1 "Value for SS1" #define SS_Value_1 "Value for SS2" struct aSamplestruct { char* s1; char* s2; }aSample; aSample ss; fun1( &aSample ); 我将结构点发送给一个函数,我知道最好的做法是将内存分配给S1,复制字符串,并在使用后释放分配的内存,如下所示 ss

我一直在写一个C程序。其中我有一个包含char*成员的结构

#define SS_Value_1 "Value for SS1"
#define SS_Value_1 "Value for SS2"

struct aSamplestruct {

char* s1;
char* s2;

}aSample;

aSample ss;

fun1( &aSample );
我将结构点发送给一个函数,我知道最好的做法是将内存分配给S1,复制字符串,并在使用后释放分配的内存,如下所示

ss->s1 = (char*) MEM_alloc(sizeof(char) * (strlen(SS_Value_1) + 1);
strcpy(ss->s1, SS_Value_1);
在报告中使用变量ss.s1并执行无内存操作

MEM_free(ss.s1); 
工作正常,不用担心。但是我必须在36种不同的条件下为大约10个char*成员编写相同的代码

另一种方法是,在不分配任何内存的情况下,我可以直接将#define值分配给我的结构成员,如下所示

ss->s1 = SS_Value_1;
在报表中使用此变量,无需释放任何内存。 这种方式也很好,在示例执行中没有问题

我想知道的是

这是否会导致内存泄漏? 它会停止执行大数据吗

提前谢谢

问候,, 苏迪尔

这与 char*str; str=“abc”

也就是说,您正在声明一个char指针,创建一个字符串文本并将其地址分配给指针。应该适用于任何数量的数据