我在带有Linux操作系统的嵌入式系统上有一个配置文本文件。要求文件是文本,嵌入式系统有32兆字节的动态内存。应用程序。将读取该文件的代码为C++。
可以使用这样的方法读取该文件。
#include <string>
#include <fstream>
ifstream infile ("config_file_path");
if (infile.good())
{
string line;
// Set capacity to length of the longest line.
const unsigne
C++中的伪代码
char* data = new char[determine_size()];
// ... do some stuff with data
delete[] data;
// ... repeat process
因此,基本上,每次都会将数据重复分配到一个大小不同的新数组中。尽管每次之前的分配总是首先被解除分配。
这会导致内存碎片吗?
我不太熟悉C++中的内存管理;直觉告诉我这不是一个好主意。
如何实现具有以下约束的分配和跟踪内存的数据结构
分配和释放O(1)中的内存
最小碎裂。
假设您有1KB的内存单位。您需要在2kB - 64 KB内存之间分配。
为例
甲-一
B-1
C-4
D-2
0 1 2 3 4 5 6 7 8 9
X A x B C D D x
当我们释放内存时(如x所示),如果我们在可用的最小地址上分配内存,那么就会出现碎片。因此,在上面的例子中,即使3个单元是空闲的,我们也不能分配3个连续单元的内存。
如何避免下面代码中的bad_alloc错误。它说C叫做abort函数:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
SIGABRT
#include<iostream>
#include<math.h>
#include<conio.h>
using namespace std;
int main()
{
int n,p,count=0;
double l,t;
while(1)
{