小编Bil*_*ill的帖子

如何使用嵌入的null构造一个std :: string?

如果我想构造一个std :: string,其行如下:

std::string my_string("a\0b");
Run Code Online (Sandbox Code Playgroud)

我希望在结果字符串中有三个字符(a,null,b),我只得到一个.什么是正确的语法?

c++ null stdstring

82
推荐指数
7
解决办法
4万
查看次数

你应该分配多少内存?

背景:我正在编写一个使用大量地理数据的C++程序,并且希望一次性加载大块进程.我不得不使用为32位机器编译的应用程序.我正在测试的机器运行的是64位操作系统(Windows 7)并且有6 GB的内存.使用MS VS 2008.

我有以下代码:

byte* pTempBuffer2[3];
try
{
    //size_t nBufSize = nBandBytes*m_nBandCount;
    pTempBuffer2[0] = new byte[nBandBytes];
    pTempBuffer2[1] = new byte[nBandBytes];
    pTempBuffer2[2] = new byte[nBandBytes];
}
catch (std::bad_alloc)
{
    // If we didn't get the memory just don't buffer and we will get data one
    // piece at a time.
    return;
}
Run Code Online (Sandbox Code Playgroud)

我希望能够分配内存,直到应用程序达到32位寻址的4千兆字节限制.但是,当nBandBytes为466,560,000时,第二次尝试新抛出std :: bad_alloc.在这个阶段,进程的工作集(内存)值是665,232 K所以,我似乎无法获得分配的内存.

对于32位Windows中的应用程序,已经提到了2 gig的限制,对于win32,可以使用/ 3GB开关扩展到3 gig.在这种环境下这是一个很好的建议,但与这种情况无关.

在具有32位应用程序的64位操作系统下,您应该分配多少内存?

c++ new-operator dynamic-memory-allocation

8
推荐指数
2
解决办法
1万
查看次数