我一直在写一个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
答案 0 :(得分:1)
这类似于 char * str; str =" abc&#34 ;;
也就是说,您正在声明一个char指针,创建一个字符串文字并将其地址分配给指针。应适用于任何数据量。