C GLib中的GRefString实现是什么?
我想知道参考计数存储在哪里?由于类型定义为:C GLib中的GRefString实现是什么?,c,string,refcounting,ref-struct,C,String,Refcounting,Ref Struct,我想知道参考计数存储在哪里?由于类型定义为: typedef char GRefString; 所有的g_ref_string*…()函数都只返回gchar*,而不是一个可以保存引用计数的结构。sds库的诀窍是在char*指向的内存之前保存元数据头结构吗?我担心这样的实施在某个时候会适得其反,对吗?即:当使用这种预装表头的字符串时会出现什么问题?参考计数数据存储在字符串之前 在源代码之后,您将在以下相关行中结束: real_size = private_size + block_size;
typedef char GRefString;
所有的
g_ref_string*…()
函数都只返回gchar*
,而不是一个可以保存引用计数的结构。sds
库的诀窍是在char*
指向的内存之前保存元数据头结构吗?我担心这样的实施在某个时候会适得其反,对吗?即:当使用这种预装表头的字符串时会出现什么问题?参考计数数据存储在字符串之前
在源代码之后,您将在以下相关行中结束:
real_size = private_size + block_size;
block\u size
是要在堆中分配的内容(在GRefString
情况下,字符串的长度加1),private\u size
是sizeof(GArcBox)
,即包含refcounting数据的结构。引用计数数据存储在字符串之前
在源代码之后,您将在以下相关行中结束:
real_size = private_size + block_size;
block\u size
是要在堆中分配的值(在GRefString
的情况下,字符串的长度加1),而private\u size
是sizeof(GArcBox)
,例如,包含refcounting数据的结构。回答您的问题:如果@antirez使用sds
您的意思是简单动态字符串
。当您以错误的方式使用指针时,可能出现的问题是您经常遇到的问题,不多也不少。回答您的问题:if bysds
您的意思是@antirez的简单动态字符串
,而不是yes:使用的技巧是相同的。当您以错误的方式使用指针时,可能出现的问题是您通常会遇到的问题,不多也不少。