我正在尝试编写像这样的大小函数:
size(void *p,int size);
Run Code Online (Sandbox Code Playgroud)
这将返回p指向的数组的大小.例如:
Int *a = malloc((sizeof(int)*100));
size(a,sizeof(int)); // this should return 100
Run Code Online (Sandbox Code Playgroud)
我认为这是可能的,因为如果我记得,malloc会跟踪在某些头字节中分配的空间.
这是我到目前为止所拥有的:
int size(void *p, int size)
{
p = (unsigned int *)p - 1;
unsigned int elements = (*(unsigned int *)p);
return elements/size;
}
Run Code Online (Sandbox Code Playgroud)
现在,假设分配的空间大小在指针之前的4个字节中,这应该返回字节或偏移量.这就是我在黑暗中的地方.我无法弄清楚malloc如何格式化这些头字节的细节.malloc如何打包标题位?
谢谢,我很感激.我确定这段代码有问题,而且它不是特别便携,可能与系统有关,但我这样做很有趣.
我在Rails 3应用程序中实现了Devise,我需要管理员用户才能管理用户.用户无法注册,因此管理员必须创建帐户.最好的方法是什么?
UsersController当Devise已经提供时,创建我自己的东西似乎不太干,Devise::RegistrationController但我没有看到任何其他选项.
我发现检查重复项的唯一方法是插入并检查std::pair.secondfor false,但问题是如果密钥未使用,这仍会插入一些东西,而我想要的是一个map.contains(key);函数.
我想制作3D游戏,最好是可以在浏览器中播放.有人说搅拌机,有人说团结.各自的优点和缺点是什么?你更倾向哪个?为什么?另外,您对教程有什么建议吗?
我有一个从Android ContactManager示例中获得的联系人列表视图.此列表显示正常,但我无法弄清楚如何从所选项目中获取信息,如"姓名"和"电话号码".
我可以获得所选位置,但mContactList.getItemAtPosition(position)的结果是一个ContentResolver $ CursorWrapperInner,这对我来说并没有任何意义.我无法从中得到正面或反面.
任何人都知道如何从listView中的选定项目获取名称/ ID /电话号码?
这是我的代码.
@Override
public void onCreate(Bundle savedInstanceState)
{
Log.v(TAG, "Activity State: onCreate()");
super.onCreate(savedInstanceState);
setContentView(R.layout.choose_contact);
// Obtain handles to UI objects
mAddAccountButton = (Button) findViewById(R.id.addContactButton);
mContactList = (ListView) findViewById(R.id.contactList);
mShowInvisibleControl = (CheckBox) findViewById(R.id.showInvisible);
// Initialize class properties
mShowInvisible = false;
mShowInvisibleControl.setChecked(mShowInvisible);
mContactList.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
addContactAt(position);
}
});
mShowInvisibleControl.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Log.d(TAG, "mShowInvisibleControl changed: " + isChecked); …Run Code Online (Sandbox Code Playgroud) 此功能旨在根据新旧模式之间的差异构建学说迁移类。
那么,系统所针对的旧模式存储在哪里?我在一个 symfony 项目中,我的配置中只有一个 schema.yml。
我的问题首当其冲是我的架构存在问题导致迁移失败(我有一个名为“组”的列)......在我的架构中更改名称后......确保迁移生成和迁移尝试总是会出错,因为之前的迁移尝试仅部分完成。
因此,我一直想将所有内容都设置回“原始”状态,就好像从未发生过迁移一样,我希望将当前模式/数据库视为版本 0,并制作新的迁移类。
但是,手动重置我的数据库并清除迁移类不起作用,并且生成的差异类坚持删除不再存在的表。
所以,我假设某处有一个缓存文件,其中包含与之比较的旧模式数据?
谢谢你的帮助。
在Silverlight或WPF中创建XAML页面时,系统会创建一个名为"LayoutRoot"的顶级容器.这个名称有什么特别之处,或顶层容器可以被称为任何东西(甚至什么都没有)?
我需要一个代码的帮助,我想在python中实现switch case模式,所以就像一些教程所说,我可以使用字典,但这是我的问题:
# type can be either create or update or ..
message = { 'create':msg(some_data),
'update':msg(other_data)
# can have more
}
return message(type)
Run Code Online (Sandbox Code Playgroud)
但它不适合我,因为some_data或other_data可以是None(如果没有则会引发错误)并且msg函数需要很简单(我不想在其中加入一些条件).
这里的问题是每次执行函数msg()以填充dict,这与开关案例模式不同,后者通常在其他编程语言中不执行代码,case除非它是匹配的.
还有另一种方法可以做到这一点,或者我只需要做,如果elif ...
更新: 感谢您的所有回复,但实际上它更像是这样
message = { 'create': "blabla %s" % msg(some_data),
'update': "blabla %s" % msg(other_data)
'delete': "blabla %s" % diff(other_data, some_data)
}
Run Code Online (Sandbox Code Playgroud)
所以lambda在这里不起作用而且没有调用相同的函数,所以它更像是我需要的真正的开关案例,也许我必须考虑其他模式.
我想要一个配置,我的构建服务器运行一个NUnit测试,打开并驱动远程机器上的浏览器.实现这一目标的最佳方法是什么?
在Selenium 1中很容易做到,因为java代理服务器位于测试和浏览器之间.在Selenium 2中,您的测试直接与浏览器通信(至少在IE和Firefox中).
有没有办法做到这一点?可能有WCF服务或其他什么?