Proper Way To Initialize Unsigned Char*

前端 未结 7 2044
渐次进展
渐次进展 2021-02-04 06:03

What is the proper way to initialize unsigned char*? I am currently doing this:

unsigned char* tempBuffer;
tempBuffer = \"\";

<
7条回答
  •  名媛妹妹
    2021-02-04 06:27

    If you know the size of the buffer at compile time:

    unsigned char buffer[SIZE] = {0};
    

    For dynamically allocated buffers (buffers allocated during run-time or on the heap):

    1.Prefer the new operator:

    unsigned char * buffer = 0;  // Pointer to a buffer, buffer not allocated.
    buffer = new unsigned char [runtime_size];
    

    2.Many solutions to "initialize" or fill with a simple value:

    std::fill(buffer, buffer + runtime_size, 0); // Prefer to use STL
    memset(buffer, 0, runtime_size);
    for (i = 0; i < runtime_size; ++i) *buffer++ = 0;  // Using a loop
    

    3.The C language side provides allocation and initialization with one call.
    However, the function does not call the object's constructors:

    buffer = calloc(runtime_size, sizeof(unsigned char))
    

    Note that this also sets all bits in the buffer to zero; you don't get a choice in the initial value.

提交回复
热议问题