无论如何只删除数组的一部分?

时间:2011-06-05 12:18:35

标签: c++ arrays

char myWord[20];

我想删除这个数组的最后10个字符,我的意思是释放最后10个字符所使用的内存。反正有吗?

下面是一个可能有用的子字符串的示例函数。

str& substring(uint Start, uint Count){
    for(uint x=0; x<Count; x++){
        mString[x] = mString[x+Start];
    }  
    // SOMEHOW FREE MEMORY OF mString FROM [Start+Count] TO [mLength]
    mLength = Count;
    return *this;
}

2 个答案:

答案 0 :(得分:3)

不,不是真的。如果从malloc获得指向内存的指针,然后使用realloc来改变大小,你真的可以这样做,但我很确定它甚至不能保证它会释放未使用的字节。

答案 1 :(得分:2)

使用堆栈分配的数组 1 ,没有。您只能使用一些特殊字符来标记数组的“逻辑结束”;对于字符串,通常使用NUL字符(0)。


  1. 即使在堆上分配了东西,通常在分配中没有那么多粒度来释放20字节长字符串的10个字节。