我有一个结构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:
对不起,但我很着急,我没有告诉你所有你需要的信息.现在让我这样做:)基本上,我想创建一个应用程序,它获取两个给定驱动器/文件夹的文件列表,然后比较它们.我想(并且仍然这样),最简单的方法是,当我将文件名及其大小存储在如上所述的结构中时.所以我必须动态分配内存(我认为这就是他们所说的)文件名和大小以及结构的内容.
我确定这是一个简单的问题,但我在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.这里发生了什么?
考虑以下:
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)
这是为什么?
如果文件大小约为1-2GB,那么向现有文件添加标题(例如文件元数据)的最佳方法是什么?
在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)
我知道代码看起来是错误的,任何帮助都是可观的。
我可以使用哪些Windows和Linux系统工具来确定对齐问题,缓存未命中以及与Visual C++和GCC生成的代码相关的其他参数?我可以使用这些工具来确定结构的对齐方式,这样我就可以避免编译器生成的填充吗?
在.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,我不知道在哪里找到它.关于如何解决这个问题的任何想法?
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?
我的项目在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++ ×8
c ×3
.net ×1
ambiguity ×1
c++11 ×1
comparison ×1
constructor ×1
file ×1
free ×1
gcc ×1
generics ×1
header ×1
io ×1
javascript ×1
local-class ×1
malloc ×1
mfc ×1
name-lookup ×1
native ×1
numbers ×1
optimization ×1
pointers ×1