小编the*_*k81的帖子

我可以使用有效的电子邮件地址作为Linux目录名称

我以为这已经被问了一百万次了,但我的搜索没有发现任何事情.

我可以安全地使用电子邮件地址作为linux目录名吗?换句话说,任何有效的电子邮件地址也是有效的目录名称?如果没有特别的字符,我必须先过滤?

language-agnostic linux email

4
推荐指数
1
解决办法
512
查看次数

使用数组外部地址的数组运算符

我最近遇到了一个C++类,它实现了一个非零索引的数组.也就是说,可以将此类初始化为具有15..19的有效索引范围.此类计算索引为0的元素的地址,即使这可能超出分配的地址空间并存储该地址.然后使用此元素0地址通过operator []处理元素访问.一些示例代码(简化):

template <typename T>
class NonZeroArray
{ 

public: 

NonZeroArray(int min_index, int size, T default_element) : 
    m_min_index(min_index), 
    m_size(size),
    m_default_element(default_element)
{
    m_base_address = (T*) malloc(size*sizeof(T));
    m_zero_index_adress = m_base_address - min_index;
}

~NonZeroArray()
{
    free(m_base_address);
}

T& element(int index) 
{
    if ( index < m_min_index || index >= m_min_index + m_size) 
        return m_default_element;
    else
        return m_zero_index_adress[index];
} 

private:
    int m_min_index;
    int m_size;
    T* m_base_address;
    T* m_zero_index_adress;
    T m_default_element;
};
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎不太复杂.我真的不明白为什么开发人员没有选择通过m_base_address [index + m_min_index]实现元素访问.但更糟糕的是,我担心目前的实施可能会很危险.代码似乎可靠地工作,但我想知道如果在m_zero_index_address的计算中存在算术溢出会发生什么,即如果最小索引偏移量大于allocatead地址.是否有可能出现可怕的错误,或者此代码是否始终安全?

c++ arrays

0
推荐指数
1
解决办法
67
查看次数

标签 统计

arrays ×1

c++ ×1

email ×1

language-agnostic ×1

linux ×1