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

时间:2017-02-08 05:48:16

标签: 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->s1 = (char*) MEM_alloc(sizeof(char) * (strlen(SS_Value_1) + 1);
strcpy(ss->s1, SS_Value_1);

在报告中使用变量ss.s1并执行mem。

MEM_free(ss.s1); 

它的工作正常无后顾之忧。但我必须为36个不同条件下的10个char *成员编写相同的代码。

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

ss->s1 = SS_Value_1;

在报告中使用此变量,无需释放任何内存。 这种方式也很好,样本执行没有问题。

我想知道的是

  

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

提前致谢

此致 的Sudhir

1 个答案:

答案 0 :(得分:1)

这类似于 char * str; str =" abc&#34 ;;

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