小编In *_*ico的帖子

如何释放()一个正确的malloc()结构?

我有一个结构malloc()'d,在使用它们之后,我想释放()它,但我的程序冻结在这里.谁能告诉我,我做错了什么?

这是我的代码:

struct data  
{  
char *filename;  
char *size;  
};   
 //primarypcs is a long type variable
struct data *primary = (struct data *)malloc( primarypcs * sizeof( struct data ) );  
memset( primary, 0, sizeof(struct data *) * primarypcs );  
...
...
...
for ( i = 0; i < primarypcs; i++ )  
{
   free( primary[i].filename );  //<----my program freezes here
   free( primary[i].size );      //<----or here
}
free( primary );  
Run Code Online (Sandbox Code Playgroud)

提前致谢!

kampi

编辑:

我如何正确malloc内存的文件名和大小?

EDIT2:

对不起,但我很着急,我没有告诉你所有你需要的信息.现在让我这样做:)基本上,我想创建一个应用程序,它获取两个给定驱动器/文件夹的文件列表,然后比较它们.我想(并且仍然这样),最简单的方法是,当我将文件名及其大小存储在如上所述的结构中时.所以我必须动态分配内存(我认为这就是他们所说的)文件名和大小以及结构的内容.

c malloc free pointers

7
推荐指数
1
解决办法
2816
查看次数

比较javascript中的负数

我确定这是一个简单的问题,但我在javascript中比较负数,即:

var num1 = -83.778;
var num2 = -83.356;

if(num1 < num2)
{
    // Take action 1
}
else
{
    // Take action 2
}
Run Code Online (Sandbox Code Playgroud)

此脚本将始终采取操作2,即使num1小于num2.这里发生了什么?

javascript comparison numbers

7
推荐指数
1
解决办法
1万
查看次数

为什么这两个构造函数一起不产生歧义错误?

考虑以下:

class A
{
private:
    A() {}
public:
    A(int x = 0) {}
};


int main()
{
    A a(1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我有两个构造函数,一个是默认值,另一个是使用默认参数转换构造函数.当我尝试编译代码时,我预计会出现歧义错误,但编译器不会产生错误.

即使我没有创建实例A,它也不会产生歧义错误.

int main()
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是为什么?

c++ constructor ambiguity

7
推荐指数
2
解决办法
1036
查看次数

C,C++的替代品?

所有,

有许多编程语言/操作系统/设备驱动程序,即使用CC++构建的软件.我想知道C和C++是否是所有公司必须构建自己的产品的唯一2种低级编程语言?如果有的话,为什么C和C++比其他选项更受偏好?

c c++

6
推荐指数
3
解决办法
3114
查看次数

将标头添加到大文件的最佳方法是什么?

如果文件大小约为1-2GB,那么向现有文件添加标题(例如文件元数据)的最佳方法是什么?

在C++中

c++ io header file

6
推荐指数
1
解决办法
360
查看次数

C++ 中的本地类

我正在阅读 Balagurusamy 的 C++ 面向对象编程中的“本地类”概念(http://highered.mcgraw-hill.com/sites/0070593620/information_center_view0/)。

最后一行说“封闭函数不能访问本地类的私有成员。但是,我们可以通过将封闭函数声明为友元来实现这一点。

现在我想知道如何完成突出显示的部分?

这是我正在尝试但没有运气的代码,

#include<iostream>
using namespace std;

class abc;

int pqr(abc t)
{
    class abc
    {
        int x;
    public:
        int xyz()
        {
            return x=4;
        }
        friend int pqr(abc);
    };
    t.xyz();
    return t.x;
}

int main()
{
    abc t;
    cout<<"Return "<<pqr(t)<<endl;
}
Run Code Online (Sandbox Code Playgroud)

我知道代码看起来是错误的,任何帮助都是可观的。

c++ local-class

5
推荐指数
1
解决办法
5555
查看次数

C和C++的优化工具

我可以使用哪些Windows和Linux系统工具来确定对齐问题,缓存未命中以及与Visual C++和GCC生成的代码相关的其他参数?我可以使用这些工具来确定结构的对齐方式,这样我就可以避免编译器生成的填充吗?

c c++ optimization gcc visual-studio

5
推荐指数
1
解决办法
2579
查看次数

如何在托管CLR的本机c ++应用程序中创建通用.NET类型(不使用C++/CLI)?

在.NET程序中,我可以通过以下方式创建泛型类型:

 System::Type::MakeGenericType(...)
Run Code Online (Sandbox Code Playgroud)

必须有一种方法可以在本机C++中为.NET类型(带_TypePtr)做到这一点.我正在托管我自己的CLR实例而不使用C++/CLI.(这是一个如何做到这一点的例子.)我的方法是:

_TypePtr BuildGenericType(_TypePtr spGenericType, _TypePtr spTypeArgs[]) 
{
    return spGenericType-> ..... ???
}
Run Code Online (Sandbox Code Playgroud)

但是没有类似的方法MakeGenericType,我不知道在哪里找到它.关于如何解决这个问题的任何想法?

.net c++ generics native

5
推荐指数
1
解决办法
488
查看次数

ISO C++ draft - 3.4.2/3 - 参数依赖名称查找

ISO C++草案(n3290)中的一点:

3.4.2/3参数依赖名称查找:

X是由unquali音响ED查找(3.4.1)中产生的查找组并且让Y是由参数依赖查找产生的查找集(德音响定义如下).如果X包含

  • 宣布集体成员(#1)或
  • 块范围函数声明,它不是using声明(#2)或
  • 声明既不是函数模板也不是函数模板(#3)

然后Y是空的.否则Y是在与参数类型相关联的名称空间中找到的声明集,如下所述.通过查找名称找到的声明集是X和的并集Y.

是否有示例代码片段演示了涉及#1,#2和#3的ADL?

c++ name-lookup c++11

5
推荐指数
1
解决办法
226
查看次数

从Visual Studio 2010到2012 RC编译MFC应用程序将导致LNK2038

我的项目在VS 2010中的调试和发布模式下编译并运行正常.今天我尝试用VS 2012编译它,我收到了这个错误:

1>  Generating Code...
1>pcrecppd.lib(pcrecpp.obj) : error LNK2038: mismatch detected for '_MSC_VER': 
value '1600' doesn't match value '1700' in NamesEditorDlg.obj
Run Code Online (Sandbox Code Playgroud)

我在代码中搜索"_MSC_VER"但我找不到任何匹配项.我也找不到"1600"或"1700".

所以我想知道如何解决这个问题.

c++ mfc linker-errors visual-studio-2010 visual-studio-2012

5
推荐指数
1
解决办法
1万
查看次数