Нужно ли удалять указатель из метода sqlite3_column_blob ()? - PullRequest
3 голосов
/ 28 ноября 2008

Вот так: const void * test = sqlite3_column_blob (stat, 1); Могу ли я удалить или удалить [] тест?

Ответы [ 2 ]

7 голосов
/ 23 марта 2010

Из документации sqllite :

Возвращаемые указатели действительны до тех пор, пока не произойдет преобразование типа или до вызова sqlite3_step () или sqlite3_reset () или sqlite3_finalize (). Пространство памяти, используемое для хранения строк и больших двоичных объектов, освобождается автоматически. Не передавайте указатели, возвращаемые sqlite3_column_blob (), в sqlite3_free ().

0 голосов
/ 28 ноября 2008

Посмотрите на руководство по API. Если это API C, вам, вероятно, придется free. Если он не предоставляет свою собственную функцию, такую ​​как sqlite3_free (например, pcre делает это), вы должны использовать эту функцию.

То, что вы не можете сделать, это удалить его с помощью оператора удаления C ++, так как у вас есть указатель void. Вы не можете удалить указатель void, так как компилятор должен знать о его типе. (а void является неполным типом. Вы также не можете удалить неполные типы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...