我们有一个C++ Builder XE项目(VCL Forms Application),里面有几十个表单和单元.每当添加,删除或重命名属于项目的文件时,IDE都应该做两件事:
但是,IDE不是仅进行必要的更改,而是对现有的USEFORM和CppCompile记录进行洗牌,即使它们不受更改的影响.如果我添加一个单元(cpp和头文件),即使不需要对项目源进行任何更改,也只需要对cbproj文件进行任何更改,USEFORM都会被洗牌.
我没有看到新订单如何形成的具体模式.如果我编辑或重命名一个单元,大约一半的USEFORMs似乎改变了位置,只改变了一对或没有CppCompile记录.如果在两台不同的机器上对项目副本进行了更改,则大多数更改似乎都相似,但并非全部.这表明重新排序不是随机的.
使用Subversion合并更改时,该行为会导致问题,因为它会强制手动解决更改顺序造成的冲突.
所以问题是:什么可能导致上述行为以及如何摆脱它?
我有一个问题......让我说我有以下部分代码:
int *a,*a1,*a2;
for (i=1; i<=2; i++) {
a=malloc(sizeof(int));
if (i==1) a1=a;
else if (i==2) a2=a;
}
*a1=5;
*a2=4;
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如果我使用printf打印a1和a2变量a1将得到值5而a2值为4?所以,如果我使用malloc来分配内存和该内存空间中的一个点并再次使用malloc来分配内存然后指向内存的不同部分,但内存的第一部分仍然存在?或者如果我再次使用malloc,它将擦除内存的第一部分,它将写入新的内存部分