小编Sam*_*nen的帖子

IDE生成的USEFORM宏调用改变了它们的顺序

我们有一个C++ Builder XE项目(VCL Forms Application),里面有几十个表单和单元.每当添加,删除或重命名属于项目的文件时,IDE都应该做两件事:

  1. 如果受影响的单元是表单或框架,则在项目源文件(ProjectName.cpp)中添加或更改对USEFORM宏的调用
  2. 添加或更改项目文件(ProjectName.cbproj)中的CppCompile元素

但是,IDE不是仅进行必要的更改,而是对现有的USEFORM和CppCompile记录进行洗牌,即使它们不受更改的影响.如果我添加一个单元(cpp和头文件),即使不需要对项目源进行任何更改,也只需要对cbproj文件进行任何更改,USEFORM都会被洗牌.

我没有看到新订单如何形成的具体模式.如果我编辑或重命名一个单元,大约一半的USEFORMs似乎改变了位置,只改变了一对或没有CppCompile记录.如果在两台不同的机器上对项目副本进行了更改,则大多数更改似乎都相似,但并非全部.这表明重新排序不是随机的.

使用Subversion合并更改时,该行为会导致问题,因为它会强制手动解决更改顺序造成的冲突.

所以问题是:什么可能导致上述行为以及如何摆脱它?

ide c++builder c++builder-xe

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

malloc in for循环

我有一个问题......让我说我有以下部分代码:

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,它将擦除内存的第一部分,它将写入新的内存部分

c memory-management

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

标签 统计

c ×1

c++builder ×1

c++builder-xe ×1

ide ×1

memory-management ×1