例如,如果一个32位整数溢出,而不是升级int到long,如果我们需要一个仅在2 40之内的范围,我们可以使用一些40位类型,这样我们就可以节省24(64-40)位整数?
如果是这样,怎么样?
我必须处理数十亿和空间是一个更大的约束.
在一个类中,私有成员是在公共成员的单独内存中分配的,还是按照定义的顺序分配的所有成员?
例如,
class A {
private:
int a1;
int a2:3;
public:
int z;
int a3:2;
int a4:5;
private:
int a5:2;
}
Run Code Online (Sandbox Code Playgroud)
是a1,a2和a5凑钱进行内存分配或者是单纯a1,a2,a3,a4,a5?
如果发生夜总会,可能会在比特字段的情况下改变班级的大小.
定义没有维度的全局数组时的概念是什么?这表示输出为16.
#include <stdio.h>
#include <stdlib.h>
int arr[];
int main(int argc, char *argv[])
{
arr[1] = 16;
printf("%d\n",arr[1]);
system("PAUSE");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
甚至sizeof(arr)都不起作用.为什么?
在这两种情况下,访问数组或内存分配会产生什么影响:
1.
int **arr;
arr = malloc( sizeof(int) * row * column );
Run Code Online (Sandbox Code Playgroud)
2.
int **arr;
arr = malloc( sizeof(*arr) * row);
for(i=0; i<row; i++)
arr[i] = malloc( sizeof( **arr) * column));
Run Code Online (Sandbox Code Playgroud) 假设有许多程序同时运行.
运行的每个可执行程序是否在RAM中具有自己的代码,数据和堆栈段,或者是完整的RAM分为4个段,每个段包含每个程序的相应段.
我需要存储大约10000个变量的布尔信息.首先我想到使用bool数组arr [10000],但需要40000个字节.但我需要以有效的内存方式存储这些信息.也许使用位操作?还需要另外一件事我需要全局存储它并动态分配它.你能帮我解决这个问题吗?
我有2个文件A和B.两个都有超过100行.我想删除两个文件之间的公共行.
A:
asdf123
fdsa123
rrrr456
yyyy555
Run Code Online (Sandbox Code Playgroud)
B:
fdsa123
hhhh888
yyyy555
Run Code Online (Sandbox Code Playgroud)
所以现在文件应该是
A1:
asdf123
rrrr456
Run Code Online (Sandbox Code Playgroud)
B1:
hhhh888
Run Code Online (Sandbox Code Playgroud) 在文件xyz.c中
int p=2; //global
#define sum(p,i) p+i
int main()
{
printf("%d", sum(5,6));
}
Run Code Online (Sandbox Code Playgroud)
这里的输出是11(而不是8); 为什么?
如何为指向数组的指针执行memset?
int (*p)[2];
p=(int(*))malloc(sizeof(*p)*100);
memset(p,0,sizeof(*p)*100);
Run Code Online (Sandbox Code Playgroud)
这个分配是正确的吗?
在函数中,如果我返回一些原始类型的对象的地址.我可以放心,它永远不会是一个NULL价值吗?
我是否需要查看NULL类似的声明
if (r_value) { //do something }
else { //ERROR }
Run Code Online (Sandbox Code Playgroud)
?