> If I have a SQLITE virtual table, can I store a direct pointer value from argv (const char*) inside sqlite3_module::xConnect to use later in a call to sqlite3_module::xFilter? Specifically the address of the module name inside argv[0]. My study of the relevant docs shows them to be silent on the issue of argument lifetimes. So your question has several answers of varying utility. > I just need to know whether the lifetime of the module name is guaranteed for the life of the Virtual Table, or do I need to deep copy it. I find no such guarantee, and I was looking for it carefully. I would think that means the usual guarantee applies: The passed argument values (whether indirect or not) can be relied upon during execution of the call. No longer lifetime is guaranteed. > (It seems to work). Lots of things doomed to fail one day do not do so conveniently soon. That can be seen as bad luck or as a design failure. I looked at the implementation calling into that xConnect method, and it looked like no needless copies were made. Whether that will change I dare not predict. So it appears that the same pointer you provided earlier is reaching your xConnect method. Is that so? And if so, I suggest, (plagiarizing): You've got to ask yourself one question: 'Do I feel lucky?'.