As the comments above indicate, you don't need to manage the memory that "Alan" exists in.
Let's see what that looks like in practice.
I made a modified version of your code:
#include <iostream>
void test() {
    const char** name;
    name = new const char* { "Alan\n" };   
    delete name;
}
int main()
{
    test();
}
and then I popped it into godbolt and it shows what's happening under the hood. (excerpts copied below)
In both clang and gcc, the memory that stores "Alan\n" is in static memory so it always exists. This is how it creates no memory leak even though you never touch it again after mentioning it. The value of the pointer to "Alan\n" is just the position in the program's memory, offset .L.str or OFFSET FLAT:.LC0.
clang:
test():                               # @test()
        push    rbp
        mov     rbp, rsp
        sub     rsp, 16
        mov     edi, 8
        call    operator new(unsigned long)
        mov     rcx, rax
        movabs  rdx, offset .L.str
        mov     qword ptr [rax], rdx
        mov     qword ptr [rbp - 8], rcx
        mov     rax, qword ptr [rbp - 8]
        cmp     rax, 0
        mov     qword ptr [rbp - 16], rax       # 8-byte Spill
        je      .LBB1_2
        mov     rax, qword ptr [rbp - 16]       # 8-byte Reload
        mov     rdi, rax
        call    operator delete(void*)
.L.str:
        .asciz  "Alan\n"
gcc:
.LC0:
        .string "Alan\n"
test():
        push    rbp
        mov     rbp, rsp
        sub     rsp, 16
        mov     edi, 8
        call    operator new(unsigned long)
        mov     QWORD PTR [rax], OFFSET FLAT:.LC0
        mov     QWORD PTR [rbp-8], rax
        mov     rax, QWORD PTR [rbp-8]
        test    rax, rax
        je      .L3
        mov     esi, 8
        mov     rdi, rax
        call    operator delete(void*, unsigned long)