我刚刚开始学习C,当做一个关于将指针作为函数的参数传递给指针的例子时,我发现了一个问题.
这是我的示例代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int* allocateIntArray(int* ptr, int size){
if (ptr != NULL){
for (int i = 0; i < size; i++){
ptr[i] = i;
}
}
return ptr;
}
void increasePointer(int** ptr){
if (ptr != NULL){
*ptr += 1; /* <----------------------------- This is line 16 */
}
}
int main()
{
int* p1 = (int*)malloc(sizeof(int)* 10);
allocateIntArray(p1, 10);
for (int i = 0; i < 10; i++){
printf("%d\n", p1[i]);
}
increasePointer(&p1);
printf("%d\n", *p1);
p1--;
free(p1); …Run Code Online (Sandbox Code Playgroud) 我的应用程序作为C ++模块(JNI体系结构)和Java模块存在。发布新版本的android应用时出现问题。我以前从未遇到过base.apk崩溃和丢失行的情况。我不知道错误来自哪里(您的代码或其他任何东西?)。下面的Fabric crashlytics中的堆栈跟踪。感谢大家。
Crashed: Thread
0 base.apk 0xcee52642 (Missing)
1 base.apk 0xcee5ab31 (Missing)
2 base.apk 0xcee56e01 (Missing)
3 base.apk 0xcee57eab (Missing)
4 base.apk 0xcee3d305 (Missing)
5 libc.so 0xf59c3a9b (Missing)
6 libc.so 0xf5a1b406 (Missing)
7 libc.so 0xf5a0b1cf (Missing)
8 libc.so 0xf59fcaef (Missing)
9 base.apk 0xcee477b7 (Missing)
10 base.apk 0xcee4907f (Missing)
11 base.apk 0xcee5ab3d (Missing)
12 base.apk 0xcee56f43 (Missing)
13 base.apk 0xcee5aaff (Missing)
14 libandroid_runtime.so 0xf42179e4 (Missing)
15 (Missing) 0x12dfbe1e (Missing)
16 system@framework@boot.oat 0x746ba1cb (Missing)
17 (Missing) 0x707670de (Missing)
18 (Missing) 0x7019f11e …Run Code Online (Sandbox Code Playgroud) 我想从我的原始资源(或我的设备存储)加载一个gif图像,并使用Glide将其缩放到所需的宽度和高度.我成功地加载了gif图像,但无法将其缩小.
这是我的加载代码:
Glide.with(getContext()).load(R.raw.abc).override(
getResources().getDimensionPixelSize(R.dimen.note_icon_width),
getResources().getDimensionPixelSize(R.dimen.note_icon_height)).into(this);
Run Code Online (Sandbox Code Playgroud)
这是我的xml中的声明视图:
<ImageView
android:id="@+id/btn_open_warning"
android:layout_width="48dp"
android:layout_height="match_parent"
android:src="@drawable/ic_whatnew_toolbox"
app:srcSecondState="@drawable/ic_note_menu_disable" />
Run Code Online (Sandbox Code Playgroud) 我regex.h在C中使用POSIX正则表达式来计算英语文本片段中短语的出现次数.但返回值regexec(...)仅表示是否找到匹配项.所以我尝试使用nmatch和matchptr找到不同的外观,但是当我打印出匹配时matchptr,我刚收到第一个短语的第一个索引出现在我的文本中.
这是我的代码:
#include <sys/types.h>
#include <regex.h>
#include <stdio.h>
#define MAX_MATCHES 20 //The maximum number of matches allowed in a single string
void match(regex_t *pexp, char *sz) {
regmatch_t matches[MAX_MATCHES];
if (regexec(pexp, sz, MAX_MATCHES, matches, 0) == 0) {
for(int i = 0; i < MAX_MATCHES; i++)
printf("\"%s\" matches characters %d - %d\n", sz, matches[i].rm_so, matches[i].rm_eo);
}
else {
printf("\"%s\" does not match\n", sz);
}
}
int main(int argc, char* argv[]) …Run Code Online (Sandbox Code Playgroud) 我最近改变了我的原始指针,std::shared_ptr在这样的容器中使用:
std::vector<std::shared_ptr<AbstractPathContainer>> mGeneratedPaths;
Run Code Online (Sandbox Code Playgroud)
当我打电话clear()给这个容器时,它会reset()在每个容器上调用方法std::shared_ptr吗?
我有以下功能:
(defun transform-matrix (matrix)
(let ((res (map 'vector
(lambda (x)
(map 'vector
(lambda (ix)
(if ix
'(t 0) ; --> Problem happens here
0))
x))
matrix)))
res))
Run Code Online (Sandbox Code Playgroud)
此函数将接受一个二维矩阵,其中每个元素可以是 t 或 nil。然后它将转换 t -> '(t 0) 和 nil -> 0。
结果数组有一个问题是每个 (t 0) cons 现在都指向相同的内存位置。例如,如果我将结果数组保存在res变量中并执行以下操作:
(eq (aref (aref res 0) 0)
(aref (aref res 1) 1))
Run Code Online (Sandbox Code Playgroud)
*假设 res[0][0] 和 res[1][1] 是 '(t, 0) 节点。
这将导致 T。但这样做是导致 nil:
(eq '(t 0) '(t 0))
Run Code Online (Sandbox Code Playgroud)
我能问一下使创建的 cons 指向相同内存位置的变换矩阵会发生什么吗?
我在 SBCL …
android ×2
c ×2
android-ndk ×1
arrays ×1
c++ ×1
common-lisp ×1
cons ×1
crashlytics ×1
lisp ×1
pointers ×1
regex ×1
reset ×1
sbcl ×1
shared-ptr ×1
stdvector ×1