0

我正在尝试读取表示为一组可变长字节的数据。我不知道我做错了什么。

    HDFql::execute("CREATE TRUNCATE CHUNKED DATASET inclusion AS UNSIGNED VARTINYINT(UNLIMITED)");
//padding with values
        hdfql_execute("SELECT FROM inclusion");
        auto count_row = HDFql::cursorGetCount();
        std::vector<HDFQL_VARIABLE_LENGTH> result;
        std::vector<HDFQL_VARIABLE_LENGTH> my_data(1);
        for(auto i=0;i < count_row-1;++i)
            {
                int number = HDFql::variableRegister(&my_data[0]);
                if(i==0)
                {
                     scriptst << "SELECT FROM inclusion INTO MEMORY " << number; 
                }
                else
                {
                    scriptst << "SELECT FROM inclusion(" << i <<":::1) INTO MEMORY " << number; 
                }
                 
                status = HDFql::execute(scriptst);
                scriptst.str(std::string());
                scriptst.clear();
                HDFql::variableUnregister(&my_data);
                result.push_back(my_data[0]);
            }

在这个版本中,读取发生在第一行,结果按预期添加。但是如果你用一个变量替换向量以从 hdfql 中获取结果,那么内存中的整个堆栈就会崩溃,行数的变量会消失,结果块中的所有内容也会被破坏。我的意思是如果更换:

std::vector<HDFQL_VARIABLE_LENGTH> my_data(2);  -->  HDFQL_VARIABLE_LENGTH my_data;
result.push_back(my_data);
  1. 另外,我想澄清一下对hyperslab的正确理解:x-从什么位置读取如果为0则应该为空,y-读取多少->>包含(x:?:?:y)
4

0 回答 0