| |
| Справочное описание GLib | ||||
|---|---|---|---|---|
#include <glib.h>
GStringChunk;
GStringChunk* g_string_chunk_new (gsize size);
gchar* g_string_chunk_insert (GStringChunk *chunk,
const gchar *string);
gchar* g_string_chunk_insert_const (GStringChunk *chunk,
const gchar *string);
gchar* g_string_chunk_insert_len (GStringChunk *chunk,
const gchar *string,
gssize len);
void g_string_chunk_free (GStringChunk *chunk);
Строковый блок используется для хранения групп строк. Память распределяется блоками и когда строки добавляются в GStringChunk они копируются в следующую свободную позицию в блоке. Когда блок заполняется распределяется следующий блок.
Когда сохраняется большое количество строк, строковые блоки более эффективны чем использование
g_strdup(),
так как необходимо меньше вызовов ,
и при распределении тратится меньше памяти на накладные расходы.
malloc()
Добавление строк с помощью g_string_chunk_insert_const(), также позволяет удалять дубликаты.
Для создания новой GStringChunk
используется g_string_chunk_new().
Для добавления строк в GStringChunk
используется g_string_chunk_insert().
Для добавления строк в GStringChunk,
но без дубликатов уже существующих строк в GStringChunk,
используется g_string_chunk_insert_const().
Для освобождения элементов GStringChunk
используется g_string_chunk_free().
Она не позволяет освобождать отдельные строки.
typedef struct _GStringChunk GStringChunk;
Непрозрачная структура данных представляющая строковый блок (String Chunks). Она должна использоваться только при помощи следующих функций.
GStringChunk* g_string_chunk_new (gsize size);
Создаёт новый GStringChunk.
size : |
размер по умолчанию блока памяти который распределён для хранения строк. Если определённая строка больше чем этот размер по умолчанию, то для неё будет распределён блок большего размера. |
| Возвращает : | новый GStringChunk. |
gchar* g_string_chunk_insert (GStringChunk *chunk, const gchar *string);
Добавляет копию string в GStringChunk.
Возвращает указатель на новую копию строки в GStringChunk.
Символы в строке могут быть изменены, если необходимо, однако вы не должны изменять ничего после завершения строки.
В отличие g_string_chunk_insert_const(),
эта функция не контролирует дубликаты.
А также строки добавленные с помощью g_string_chunk_insert() не будут найдены с помощью g_string_chunk_insert_const() при поиске дубликатов.
chunk : |
GStringChunk. |
string : |
строка для добавления. |
| Возвращает : | указатель на копию string внутри
GStringChunk.
|
gchar* g_string_chunk_insert_const (GStringChunk *chunk, const gchar *string);
Добавляет копию string в GStringChunk, если такая же строка уже не добавлена в GStringChunk с помощью g_string_chunk_insert_const().
Эта функция полезна если вам нужно копировать большое количество строк но не нужно тратить пространство хранилища под дубликаты. Но вы должны помнить что здесь могут быть указатели на туже строку и поэтому любые изменения в строках должны выполняться очень осторожно.
Помните что g_string_chunk_insert_const()
не будет возвращать указатель на строку добавленную с помощью
g_string_chunk_insert(),
даже если они соответствуют.
chunk : |
GStringChunk. |
string : |
строка для добавления. |
| Возвращает : | указатель на новую или существующую копию string внутри
GStringChunk.
|
gchar* g_string_chunk_insert_len (GStringChunk *chunk, const gchar *string, gssize len);
Добавляет копию первых len байт string
в GStringChunk.
Копия nul-завершённая.
Символы в строке могут изменяться, если необходимо, однако вы не должны делать никаких изменений после завершения строки.
chunk : |
GStringChunk |
string : |
байты для вставки |
len : |
количество байт string для вставки,
или -1 для вставки nul-завершённой строки.
|
| Возвращает : | указатель на копию string внутри
GStringChunk
|
Начиная с версии 2.4
void g_string_chunk_free (GStringChunk *chunk);
Освобождает всю память распределённую GStringChunk.
После вызова g_string_chunk_free() запрещается
доступ к любым строкам которые содержались внутри.
chunk : |
GStringChunk. |
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |