C++ (Qt) qDebug() << v1.size() << v1.capacity() << &v1[ 0 ] << &v1[ 0 ] + v1.capacity() * [b]sizeof( int )[/b];
C++ (Qt) QVector<int> v1; QVector<int> v2; const int sizeV1 = 100000; const int sizeV2 = 60000; v1.resize( sizeV1 ); for( int i1 = 0; i1 < sizeV1; ++i1 ) v1[ i1 ] = i1; qDebug() << v1.size() << v1.capacity() << &v1[ 0 ] << &v1[ 0 ] + v1.capacity(); v1.resize( 1 ); qDebug() << v1.size() << v1.capacity() << &v1[ 0 ] << &v1[ 0 ] + v1.capacity(); v2.resize( sizeV2 ); for( int i2 = 0; i2 < sizeV2; ++i2 ) v2[ i2 ] = i2; qDebug() << v2.size() << v2.capacity() << &v2[ 0 ] << &v2[ 0 ] + v2.capacity();
100000 131068 0x1c010 0x9c000 1 2 0x1c010 0x1c018 60000 65532 0x9c010 0xdc000
100000 131068 0x7fe80050 0x7ff000401 2 0x7ff701b8 0x7ff701c060000 65532 0x7fec0050 0x7ff00040
#define NUM_TEST (20 * 1024 * 1024)int i, j;QString theS[100]; for (i = 0; i < 100; ++i) { for (j = 0; j < NUM_TEST; ++j) theS[i] += "abc"; printf("String %d\r", i); theS[i].truncate(2); // вместо этого можно и theS[i].resize(2); эффект тот же theS[i].squeeze();}