保留空间C
你能告诉我用C语言从内存中保留1000位的最佳方法吗? 我正在做一个程序,我需要管理标志(值=0或=1)。最有效的方法是什么? 我在考虑保留所需的空间,并使用掩码控制标志(位)。保留空间C,c,C,你能告诉我用C语言从内存中保留1000位的最佳方法吗? 我正在做一个程序,我需要管理标志(值=0或=1)。最有效的方法是什么? 我在考虑保留所需的空间,并使用掩码控制标志(位)。 谢谢在C语言中,您可以访问/寻址的最小内存量是一个字节,它具有CHAR\u BIT位宽(保证至少8位长)。因此,如果您正在寻找压缩结构,可以使用ceil(1000/8)bytes 您可能需要查看SO问题以了解位操作的详细信息。在C中,您可以访问/寻址的最小内存量是一个字节,该字节具有字符位宽度(保证至少8位长)。因此,
谢谢在C语言中,您可以访问/寻址的最小内存量是一个字节,它具有
CHAR\u BIT
位宽(保证至少8位长)。因此,如果您正在寻找压缩结构,可以使用ceil(1000/8)
bytes
您可能需要查看SO问题以了解位操作的详细信息。在C中,您可以访问/寻址的最小内存量是一个字节,该字节具有
字符位宽度(保证至少8位长)。因此,如果您正在寻找压缩结构,可以使用ceil(1000/8)
bytes
您可能需要查看SO问题以了解位操作的详细信息。您可以使用bool
类型:
#include <stdbool.h> // for bool
#include <stdlib.h> // for malloc
#define N 1000
bool *b = malloc(N * sizeof *b);
// for example to set the 42th element to 1
b[41] = 1;
#包含//for bool
#包括//用于malloc
#定义N 1000
bool*b=malloc(N*sizeof*b);
//例如,将第42个元素设置为1
b[41]=1;
您可以使用bool
类型:
#include <stdbool.h> // for bool
#include <stdlib.h> // for malloc
#define N 1000
bool *b = malloc(N * sizeof *b);
// for example to set the 42th element to 1
b[41] = 1;
#包含//for bool
#包括//用于malloc
#定义N 1000
bool*b=malloc(N*sizeof*b);
//例如,将第42个元素设置为1
b[41]=1;
类似于
struct bitf
{
unsigned char b:1;
};
struct bitf[1000];
如果不想使用位掩码,则“最大大小”是计算机上变量的最大大小。
或对于最小内存:
#include <stdio.h>
int main(void)
{
struct bitf
{
unsigned char a:1;
unsigned char b:1;
unsigned char c:1;
unsigned char d:1;
unsigned char e:1;
unsigned char f:1;
unsigned char g:1;
unsigned char h:1;
};
struct bitf number[125];
number[100].a = 1;
number[110].h =1;
printf("size: %d a:%d h:%d\n",sizeof(number), number[100].a ==0, number[110].h ==1);
return 0;
}
什么样的
struct bitf
{
unsigned char b:1;
};
struct bitf[1000];
如果不想使用位掩码,则“最大大小”是计算机上变量的最大大小。
或对于最小内存:
#include <stdio.h>
int main(void)
{
struct bitf
{
unsigned char a:1;
unsigned char b:1;
unsigned char c:1;
unsigned char d:1;
unsigned char e:1;
unsigned char f:1;
unsigned char g:1;
unsigned char h:1;
};
struct bitf number[125];
number[100].a = 1;
number[110].h =1;
printf("size: %d a:%d h:%d\n",sizeof(number), number[100].a ==0, number[110].h ==1);
return 0;
}
哪一个更重要:最小化它占用的空间量,还是最小化访问单个值所需的时间?如果切换标志会成为瓶颈,我会感到惊讶。通常是标志对应的过程?哪一个更重要:最小化占用的空间量,还是最小化访问单个值所需的时间?如果切换标志会成为瓶颈,我会感到惊讶。通常是标志对应于?+1的过程:此解决方案将访问时间降至最低。但是不需要使用malloc()
。它可以是一个非堆变量,可以是函数的局部变量,也可以是全局变量。+1:这个解决方案可以最大限度地减少访问时间。但是不需要使用malloc()
。它可以是非堆变量,可以是函数的局部变量,也可以是全局变量。+1:此解决方案可最大限度地减少内存使用。因为OP没有明确“高效”的含义,所以这项技术和Ouah的方法都回答了这个问题。由于OP没有具体说明“高效”的含义,所以这项技术和Ouah的答案都是正确的。