同一个类中的不同函数共享局部变量的内存?

时间:2017-07-30 14:47:11

标签: c++ arrays function memory-management

我遇到了这种荒谬的情况。我正在尝试从文件中读取数据。根据标签的类型,它将读取__uint16_t或__uint32_t。所以我在同一个类中有两个函数,可以根据需要调用它们。

void myclass::readL16()
{
    char tmp[65] = {'\0'};
    __uint16_t len;
    myfile.read(tmp, sizeof(len));
    memcpy(&len, &tmp[0], sizeof(len));
    myfile.read(tmp, len);
    printf ("%.*s", len, tmp);
}

void myclass::readL32()
{
    char tmp[65] = {'\0'};
    __uint32_t len;
    myfile.read(tmp, sizeof(len));
    memcpy(&len, &tmp[0], sizeof(len));
    myfile.read(tmp, len);
    printf ("%.*s", len, tmp);
}

这部分工作正常。

但是如果我将tmp []声明为不同的大小:例如

void myclass::readL16()
{
    char tmp[16] = {'\0'};
    ...
}

void myclass::readL32()
{
    char tmp[32] = {'\0'};
    ...
}

当我运行程序时,我遇到了中止陷阱6错误。为什么会这样呢?是不是tmp假设是各自功能的本地?

0 个答案:

没有答案